什么是机器学习
机器学习是让机器具备找一个函数的能力
这个函数就是指模型或者算法,直接将输入转化成我们想要的输出。
机器学习有不同的类别,假设要找的函数的输出是一个数值,一个标量,这种任务称为回归。
回归——预测任务。
除了回归之外,另一个常见的任务是分类,分类任务要让机器做选择题。人类先准备好一些选项,这些选项称为类别,现在要找的函数的输出就是从设定好的选项中选择一个当作输出,这个任务就是分类。
分类包括二分类和多分类。
还有结构化学习。机器不只是要做选择题或者输出一个数字,而是产生一个有结构的物体,比如画一幅图,或者写一篇文章,这种叫机器产生有结构的东西的问题称为结构化学习。
生成任务。
案例学习
任务:视频的点击次数预测。找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数。
机器学习找函数的过程分为三个步骤。第一步是写出一个带有位置参数的函数f,其能预测未来观看次数:如
y = b + w x1
y 是准备要预测的东西,要预测的是今天(2 月 26 日)这个频道总共观看的人,y 就假设是今天总共的观看次数。x1 是这个频道,前一天(2 月 25 日)总共的观看次数,y 跟 x1 都是数值,b 跟 w 是未知的参数,它是准备要通过数据去找出来的,w 跟 b 是未知的,只是隐约地猜测。猜测往往来自于对这个问题本质上的了解,即领域知识(domain knowledge)。机器学习就需要一些领域知识。这是一个猜测,也许今天的观看次数,总是会跟昨天的观看次数有点关联,所以把昨天的观看次数,乘上一个数值,但是总是不会一模一样,所以再加上一个 b 做修正,当作是对于 2 月 26 日,观看次数的预测,这是一个猜测,它不一定是对的,等一下回头会再来修正这个猜测。总之,y = b + w ∗ x1,而 b 跟 w 是未知的。带有未知的参数(parameter)的函数称为模型(model)。模型在机器学习里面,就是一个带有未知的参数的函数,特征(feature) x1 是这个函数里面已知的,它是来自于后台的信息,2 月 25 日点击的总次数是已知的,而 w 跟 b 是未知的参数。w 称为权重(weight),b 称为偏置(bias)。
第二个步骤是定义损失。损失也是一个函数,这个函数的输入是模型里的未知参数b和w,损失是函数L(b,w),其输入是模型参数b和w。损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。
损失函数是用参数预测出的值和真实值做对比,来调整参数。
真实的值称为标签。
比如可以将每一天预测的误差取平均,就得到了损失。L越小越好,说明预测值和真实值越接近。
平均绝对误差MAE:计算绝对值之间的差距
均方误差MSE:计算平方之间的差距
有一些任务中,预测和标签都是概率分布,这个时候可能会选择交叉熵。
可以调整不同的 w 和不同的 b,求取各种w 和各种 b,组合起来以后,我们可以为不同的 w 跟 b 的组合,都去计算它的损失,就可以画出图 1.2 所示的等高线图。在这个等高线图上面,越偏红色系,代表计算出来的损失越大,就代表这一组 w 跟 b 越差。如果越偏蓝色系,就代表损失越小,就代表这一组 w 跟 b 越好,拿这一组 w 跟 b,放到函数里面,预测会越精准。
第三步解一个最优化的问题,找一个w和b把未知的参数找一个数值出来,看代入哪一个进去可以让损失L的值最小,就是要找的w和b。梯度下降就是最常用的优化方法。
比如在个函数中最优化就是算微分。
w变化的时候主要取决于两件事情,一是斜率,斜率大则变化大,斜率小反之。学习率也会影响更新大小,这个是超参数,人为设置。
参数的变化率取决于学习率。
梯度下降可能没有找到真正最好的解,没有找到可以让损失最小的参数。事实上局部最小值是一个假问题,多试几个初始参数可以解决。
在深度学习框架中,算微分都是程序自动帮计算的。