社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【第1627期】写给前端的机器学习(序)

前端早读课 • 5 年前 • 636 次点击  

前言

今天这篇当了解一下,原来还有这样的前端。今日早读文章由阿里云@王浩杰投稿分享。

@王浩杰,毕业于大连理工大学,同年进入百度移动搜索部负责百度钱包相关业务的前端开发工作。现就职于阿里云流量产品事业部,负责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 体验版发布

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33892
 
636 次点击