Machine Learning——Lesson 1
(Tip: 文中很多蹩脚的英语,只是为了练习一下英文写句能力…)
1、机器学习就是让机器具备找一个函式的能力
Eg: 声音讯号 -> 函式 -> 其对应的文字
2、Different types of functions
- Regression(回归): The function outputs a scalar(数值).
Eg:
Input: PM2.5 today, temperature, Concentration(浓度) of O3
pass a function
Output: PM2.5 of tomorrow
找这个function(函式)的任务就叫做 Regression
- Classification(分类): People given options(classes), the function outputs the correct one.
检测一封邮件是否为垃圾文件
就像alpha go也是一个classification问题,只是选择比较复杂
- Structured Learning(使得机器学会创造某些事情)
create something with structure(image, document)
3、how to find a function?
Question: 根据YouTube 后台数据输入一个function to predict 明天(or 某一天)会有多少人观看
And how to find this function?
- First: Function with Unknown Parameters,写出一个带有未知参数的function
(Model)y = b + wx1 Model: hava unknown parameters function
x1:该频道前一天观看人数
y: a number which we want to predict
w and b: unknown parameters(Learned from data) w:weight 权重 b: bias 偏置
- Second: Define Loss from Training Data
Loss: a function of parameters L(b, w)
Loss: how good a set of values is. 也就是评判该组参数(w,b)的好坏
how to define Loss? from Training Data
eg : Data from 2017/1/1 - 2020/12/31
日期 | 订阅量 |
---|---|
2017/01/01 | 4.8k |
2017/01/02 | 4.9k |
2017/01/03 | 7.5k |
… | … |
2020/12/30 | 3.4k |
2020/12/31 | 9.8k |
评测参数L(0.5k, 1) b = 0.5k w = 1 ——> y = 0.5k + 1x1
使用1.1的值预测1.2的值
y = 0.5k + 1*4.8k = 5.3k 这个5.3k是当前参数下预测的2017.1.2的订阅量,很明显1.2的订阅量为4.9k, 所以预测值有差距
Real Data(真实的值):叫做label,我们这里使用y*表示
计算差距:e1 = |y - y*| = 0.4k
使用1.2的值预测1.3的值
y = 0.5k + 1*4.9k = 5.4k
e2 = 2.1k
同样的方法可以算出来e3, e4, …, e365*3
而且计算e的方法不同,L所代表的意义也不同,但总体来说L:越大表示当前参数质量差,越小表示当前参数越好
特殊:If y and y* are both probability distributions then choose Cross-entropy(交叉熵), We’ll talk more about that
-
Third: Optimization w*, b* = arg min L 即找到一组最优的w,b使得L最小
Gradient Descent: 梯度下降法
采用梯度下降法来确定w, b俩个参数的最优解,便于理解,首先讨论单参数w(假设仅有w这一个未知参数):
由前一个例子,可以使得w取不同的值,从而得到了这个误差曲线,为了使得寻找到一点w,使得Loss最小
步骤:(具体如下图)
1、选取一个点w0,这个点是随机的
2、然后计算该点的w对于Loss的微分,即Loss函数对w求导(or 求梯度)
3、如果斜率是负的,则w值需要增大,因为斜率是负的话,随着w的增大,Loss会逐渐减小
反之,则使得w的值减小
Question: w需要增加或者减少,那么到底需要增加多少 or 减少多少呢?
Answer: 取决于俩件事:
First: 这个地方的斜率多大!斜率越大,则变化就大一点,否则变化小一点
Second: learning rate,学习速率需要自己去设置,自己决定Learning rate的大小, 设置的大一点,每次update change比较大,训练速度比较快,但是准确度没有小一点的高,可能误差会大一些。
由上图可知,w1是如何推倒而来,重复上述过程,w会越来越优,使得Loss达到“最小值”
Q:什么时候算是Loss达到”最小值“或者说什么时候w达到最优又或者说什么时候停下来
A:俩种情况:
1)失去耐心,停止计算,或者说达到了自己设定的学习次数(hyperparameters)
2)它的微分值达到了0时,比如下图,达到了wT点
很明显可以看出,Gradient Descent有它的局限性,如上图,我们只找到了它的Local minima,但它并不是global minima
但是,这其实是一个假问题,是一个幻觉。
Then 当有了俩个参数时:
首先有俩个初始值,然后计算b对Loss的微分以及w对Loss的微分,然后使用上图的公式计算w1以及b1
紧接着,重复上面的步骤,最后将得到一个最好的w*和b*,Like this:
4、Linear Model
刚刚的例子找到了w*和b*,可以使得Loss达到0.48k,这些数据是用已知数据训练得出的conclusion,我们需要的是使用这组数据去predict以后,未知的数据,随后便展开实验:
很明显的可以看出,预测的值只是将真实的值向后平移了一天,因为公式是y = 0.1k + 0.97 * x1,机器几乎就是拿着前一天的数据去预测后一天的数据。
但是仔细观察,会发现,上面的图像存在着周期性,每七天为一个轮回,每周五和周六观看人数会减少,也就是七天一个循环,那么我们可以构建一个Model,它是参考前七天的资料,所以我们要修改之前的模型,通常一个模型的修改来源于你对这个问题的理解,也就是Domain Knowledge
xj:第j天的观看人数(j=1-7) 给它✖️不同的weight加起来,然后加上bias,得到结果
然后构建了一个新的模型,将前七天的观看人次都列入了考虑范围,结果看出,L与L‘都得到了改善,那么便继续将更长的天数纳入考虑范围:
结果看出:当随着考虑天数的增加,这一因素的影响已经微乎其微了
故,将y = kx + b,x : feature特征, 给feature✖️一个weight并加上一个bias得到预测的结果,这样的Model统称为线性模型Linear Model
5、some contents
(1) hyperparameters: 超参数,需要自己设置的参数
目前需要了解俩个:1⃣️learning rate 2⃣️ 学习次数
(2)为什么Loss可以是负的
因为function是你自己定义的, 如果我定义了一个function是,预测值与真实值label的绝对值再减去100,则该Loss一定会有负的
参考:[李宏毅2021春机器学习课程](