Machine Learning
机器学习概括来说可以用一句话来描述机器学习这件事,机器学习就是让机器具备找一个函数的能力。
Different types of Functions
Regression:假设我们今天要找的函数,他的输出是一个数值,那这样子的机器学习的任务,我们称之为Regression。
Classification:输出的是一个选项,我们要检测一封邮件是否是垃圾邮件,人工智能会输出yes or no,这时候就是Classification
Structured Learning:机器今天不只是做选择题,还要输出一个数字还要产生一个有结构的数据。
1.Case Study
在youtube后台,可以看到很多相关的信息,比如:每一天点赞的人数,每一天订阅的人数有多少,每一天观看的次数有多少。那么我们能不能根据一个频道过往所有的信息去预测它明天的观看的次数呢?我们能不能找一个函数,这个函数的输入是youtube上面我的频道的各种信息,输出就是某一天这个频道的总观看的次数。
第一步是我们要写出一个,带有未知参数的函数:y=b+w*x
• y是我们准备要预测的东西
• x是这个频道,前一天总共观看的人数
• b,w是未知的参数,它是准备要通过资料去找出来的
这个猜测往往来自于对这个问题本质了解,也就是Domain knowledge。
b跟w是未知的,这个带有未知的Parameter,Parameter中文通常翻成参数,这个带有未知的Parameter的Function 我们就叫做Model。
这个x是Function里面我们已经知道的东西,它是来自于Youtube后台的信息,我们已经知道某一天观看的总人数是多少,这个东西叫做特征,而w和b是我们不知道的,是未知的Parameter,这个跟Feature相乘的未知的参数w 我们叫它weight(权重),这个没有跟Feature相乘的,是直接加的我们叫它bias(偏置)。
2. Define Loss from Training Data
第二步要定义一个东西叫做Loss,Loss是一个Function,这个Function的输入,就是b和w,所以L是一个Function,它的输入是model里的Parameter。
我们举一个具体的例子,假设现在我们给未知的参数的设定是b,这bias等于0.5k,这个w等于1。那这个Loss怎么计算呢,如果我们b设0.5k,这个w设为1。未来的观看次数的函数就变成y等于0.5k加1倍的x,那么这样的的一个函数就是Loss.
计算这个Loss要从训练资料来进行计算,在这个问题里面我们的训练资料是这一个频道过去的观看次数。我们知道2017年1月1号到2020年12月31号的观看数是多少,接下来我们就可以计算Loss。
我们把2017年1月1号的观看次数代入这个函数里面,我们想知道b设定为0.5k,w设定为1的时候这个函数的效果怎么样。我们知道1月1号观看次数为4.8K那我们把这个x代入4.8k,看它的预测出来的结果是多少。所以根据这一个函数,如果1月1号是4.8k的观看次数的话,那第二天应该是5.3k的观看次数,但1月2号的观看次数是4.9K它高估了这个频道可能的观看人数,那么我们就可以计算一下预测的值,跟真实的值的差距,这边预测的值用y来表示,真实的值用ŷ来表示,你可以计算y跟ŷ之间的差距,得到一个eₗ,代表预测的值跟真实的值之间的差距。
同理我们可以用1月2号的值,来预测1月3号的值,如果我们现在的函数是,y等于0.5k加一倍的x,那根据1月2号的观看次数预测的1月3号的观看次数的是5.4k,实际上是7.5k,低估了这个频道在1月3号的时候的观看次数。算出e₂是2.1k。同理也可以计算这三年来每一天预测的误差。每一天的误差都可以给一个小e。
接下来我们就把每一天的误差取平均,算出一个大L,这个大L就是我们的Loss.
L越大,代表我们现在这一组参数越不好,这个L越小,代表现在这一组参数越好
3. Optimization
我们用到的,Optimization的方法,叫Gradient Descent(梯度下降)。先假设没有b那个未知的参数,只有w这个未知的参数。当我们w代不同的数值的时候,我们就会得到不同的Loss,这一条曲线就是error surface。
这种在做机器学习,需要自己设定的东西,叫做hyperparameters
什么时候会停下来呢?,
• 第一种状况是你失去耐心了
• 那还有另外一种理想上的,这个微分的值是0了,那参数的位置就不会再更新,
右侧红点这一个位置,这个真的可以让loss最小的地方,叫做global 的minima,而WT这个地方叫做local 的minima,它的左右两边,都比这个地方的loss还要高一点,但是它不是整个error surface上面的最低点。但这不是重要的。