前言
今天这篇当了解一下,原来还有这样的前端。今日早读文章由阿里云@王浩杰投稿分享。
@王浩杰,毕业于大连理工大学,同年进入百度移动搜索部负责百度钱包相关业务的前端开发工作。现就职于阿里云流量产品事业部,负责CDN等业务的开发工作。目前致力于利用深度学习领域相关知识为前端开发赋能。
正文从这开始~~
工具的使用,是人类历史发展的重要转折点。人们利用工具创造了许多不可思议的文明。随着工业化和信息技术的逐渐发展,工具的定义也发生了微妙的变化,它不再局限于辅助性工作,而是可以独立的完成一些自动化工作。这些工作一般都具有模式性,这是因为它们都由计算机算法控制。一般而言,我们们这里所说的计算机算法都是确定性的机器指令执行序列。即,机器要怎么做是程序一开始就设定好的,虽然说在程序的执行过程中可以通过参数对执行进行设定,但是其基本逻辑不变。因此,它们虽然看起来高效精确,但却还不是真正的人工智能。
机器学习的目标是让工具可以自主的完成智能化的工作。这就要求机器最好可以像人类一样去思考,而不仅仅是完成模式化的工作。机器学习的概念最早于20世纪中期就已被提出,然而受限于数据量等因素,一直没有得到很好的发展。得益于近年来“大数据”的浪潮,机器学习开始逐渐出现在大众的视野中,人脸识别、AlphaGo、无人驾驶等等的出现也让我们对机器学习有了更多的期待。
在前端开发领域中,机器学习也开始崭露头角。微软AILab的Sketch2Code,可将手稿图自动转化为html代码;阿里也推出了imgcook,将图片转换为前端代码。不过目前更多是设计稿的还原,还不涉及复杂的js逻辑处理,但相信在不远的未来,更多更智能化的工具将不断涌现,为前端开发赋能。
机器学习从训练方式上一般可分为监督学习和无监督学习两种。
监督学习可以看做是对已知问题的函数模拟。和函数类似,监督学习的训练集包括特征(输入)和目标(输出),输出和输入相对应,并事先标注好。监督学习中最常见的问题是分类问题,通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型,这个模型即预测函数f(x)。将未知结果的特征输入到该模型中去,得到的输出即为预测的结果。这样,模型就具有了对未知数据分类的能力。监督学习的目标往往是让计算机去学习我们已经创建好的分类系统。
无监督学习的输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类。无监督学习的目标不是告诉计算机怎么做,而是让机器自己去学习。聚类问题是一种典型的无监督学习,根据类内差距最小化,类间差距最大化的原则,通过对输入样本提取多维度的特征向量,达到归纳和向上抽象的目的。
分类
分类问题是机器学习中最常见的一种问题,通常也可以把分类算法叫做“分类器”。比如是否是垃圾邮件的分类器、产品是否合格的分类器等等。分类可以看做是逻辑回归的一种,它拟合的是一种非线性问题。如二分类问题可使用0/1表示结果,多分类问题通常采用one-hot独热编码来表示结果。训练分类器的过程实际上是在建立输入到输出的逻辑映射。
召回率和精确率是用来判断分类器是否符合预期的常见指标。召回率指检测结果中相关样本和样本库中所有相关样本的比率,精确率是指检测出的相关样本与检测出样本总数的比率。举例来说,假设有一个分类器,判断输入的图片是猫还是狗。
假设有1000张待分类图片,其中600张是猫,400张狗的图片。对应每一张图片,其标签都是一个长度为2的一维数组(one-hot),如果结果是猫,其值为[1, 0];结果为狗,其值为[0, 1]。经过了一定量的训练后,我们的分类器已经将逻辑关系调整到了相对稳定的程度。然后再对这1000张图片进行分类时,发现分类的结果中,600张猫的图片有560张正确识别,40张被误判成了狗的图片;400张狗的图片中有380识别正确,20张识别成了猫。因此猫的召回率是560/600 = 93.33%,狗的召回率是 380/400 = 95%;猫的精确率是 560 / 580 = 96.55%,狗的精确率是 380 / 420 = 90.48%。
聚类
聚类问题是机器学习尝试解决的另一种一类常见问题。什么是聚类?简单的说,聚类就是统计和归纳,和分类相反,把相似的物体放到一起作为一类事物,它们之间可以有彼此的不同,但是只要在某一个限度范围之内,它们仍然是同一类事物。如下面两幅图中,虽然皮毛的颜色等存在不同,但它们都是猫。
人类天生具有这种归纳和总结的能力,然而,想要让机器也具有相同的能力并不容易。
常见的聚类算法有K-Means、DBSCAN等,其基本思路都是利用向量之间的距离,从远近来判断是否属于同一类。假如有三个一维样本:100、101、200,如果要把这三个向量分成两类的话,那么100和101应该是一类,200是另外一类。因为100和101的距离仅为1,而200距100和101分别为100和99。
回归
回归也是机器学习中一个重要内容,最常见的回归分为两大类,线性回归和非线性回归。线性回归解决的问题一般被认为是线性的。举个例子,我们假设男性发际线的高度与年龄呈线性关系(这是一个悲伤的话题)。即 f(x) = ax + b,为了确定确定a和b的值,首先需要一定量的训练集。下图是收集到的一些样本,横坐标表示年龄,纵坐标表示发际线高度(发际线和眉毛之间的距离)。
有了训练集,如何确定一条直线使拟合的效果最好呢?这里需要引出最小二乘法的概念。最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出,它的主要思想就是求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小。其公式如下:
该公式的直观解释是,所有点到直线的距离平方和最小时,直线的拟合效果最佳。这也符合我们的理解。简单的回归函数可以通过数学运算直接计算出结果,而复杂的情况下,我们往往需要借助优化器来逐步优化拟合效果,关于优化器的概念将在今后介绍。
总结
让计算机根据输入的样本和人为干预来总结并归纳,从而实现对位置输入的预测,这就是机器学习最基本的工作方式。传统的机器学习需要提前做好特征提取,把提取好的特征向量输入到模型中训练。而深度学习通常不需要做太多的前置工作,特征提取的工作可以交由神经网络模型自动完成。这就给了很多传统机器学习中很难处理的问题带来了转机。
为你推荐
【第1509期】阿里imgcook 体验版发布