Machine Learning 梳理总结 L0~L6

9月份比较系统的看了李宏毅教授的Machine Learning课程,这个月开始就没太多看ML,DL的东西。下周有一个deep learning project的due,借着机会重新理一下。
下面按照之前笔记加上自己的理解做个梳理
要是发现我理解错了记得告诉我鸭

Lecture0: 机器学习介绍

Machine Learning = Looking for a function, 对于一些复杂现象,当人们靠自己找不到一些规律的时候,用机器学习可以找到事物见那个复杂的方程。在很多领域都有应用。

比如:
语音识别:人们不是对于所有的声音都能给一个确定的tag。
股票:基于过往数据,可以做出来一条回归曲线进行预料。

机器学习基本分3步:

  1. define a set of function 找规律
  2. goodness of functon 规律的好坏
  3. pick the best function 在一堆候选规律里找到最好的那个
Lecture1: Regression

这章是神经网络的基础
很多章内容都用精灵宝可梦的例子来加以解释。这是个非常好的例子,因为pokemon有很多可视化属性,比如cp值,属性,战斗力等。本章目的是想根据一只宝可梦的属性得到它进化后的cp值来决定是否要花精灵球来抓这只pokemon。
在这里插入图片描述首先给一个input: 一只宝可梦的相关信息 X ( X c p , X s , X h p , X w ) X(X_{cp},X_s,X_{hp},X_w) X(Xcp,Xs,Xhp,Xw)
output: 我们想要得到进化后的cp值。

step1: define a set of function
根据case选择不同的function,对于这个case,我们只需要知道现有的 X c p X_{cp} Xcp去预测进化后的 X c p X_{cp} Xcp,这样就是个简单的线性问题。只需要y=aX+b的简单线性方程即可。so… 代入了几组输入之后,如下:
在这里插入图片描述
每一个pokemon都有一个自己的function,自己的参数,我们需要找到是一个可以让每个pokemon都能预测的大model。
Linear model
通式可写成: y = b + Σ ω i x i y=b+\Sigma\omega _ix_i y=b+Σωixi
x i x_i xi: 输入者x的各种属性,一般是一个向量或者矩阵。
w i w_i wi: weight,权重,后面会有说。
b b b: bias, 偏差。

step2: goodness of function
怎样从上述function set中找到好的呢?
我们将本来的值减去预测的值,之间的差值越小说明函数越好。
定义一个新的function:loss function,损失函数。
Input: a function
Output: how bad it is
L ( f ) = L ( ω , b ) = ∑ n = 1 10 ( y ^ n − ( b + ω ⋅ x c p n ) ) 2 L(f)=L(\omega,b)=\sum_{n=1}^{10} (\hat y^n -(b+\omega \cdot x_{cp}^n))^2 L(f)=L(ω,b)=n=110(y^n(b+ωxcpn))2

step3: Best function
找到让 L ( f ) L(f) L(f)最小的function就是最好的:
f ∗ = a r g m i n L ( f ) = a r g m i n ∑ n = 1 10 ( y ^ n − ( b + ω ⋅ x c p n ) ) 2 f^* = argminL(f)=argmin \sum_{n=1}^{10} (\hat y^n -(b+\omega \cdot x_{cp}^n))^2 f=argminL(f)=argminn=110(y^n(b+ωxcpn))2
这个例子的function 很简单,用二元次方程就可解,但是现实中,有几百个参数,loss function是几百元的,怎么解?

很重要的一点

一直会混搅一件事情,就是只要有一组数据,这个function就会一直走直到L趋近于0。上面的 ∑ \sum 意思是把所有数据的l加起来在进行求导,一旦参数比较多了,其实量非常的大。这也是后面为什么会有stochastic gradient descent以及deep learning的时候会引入bp算法。是因为gd计算量实在太大了。

引出Gradient Descent,只要 L L L可以微分,都可以用这个解。假设只有一个参数 ω \omega ω,如何求gradient descent?
1.随机选取一个初始的点 ω 0 \omega^0 ω0
2.计算 d L d ω ∣ ω = ω 0 \frac{dL}{d\omega}|_{\omega = \omega ^{0}} dωdLω=ω0,在这就是算切斜率的意思,如果值为负数->increase ω \omega ω;如果为正数->decrease ω \omega ω
走这一步是走多远呢?step size取决于两件事:
第一件事,微分值 d L d ω \frac{dL}{d\omega} dωdL有多大,微分值越大走的越多。
第二件事,添加一个常数项 η \eta η, “learning rate”: w 0 − η d L d ω ∣ ω = ω 0 w^0- \eta \frac{dL}{d\omega}|_{\omega=\omega^0} w0ηdωdLω=ω0—> ω 1 \omega^1 ω1
3.计算 d L d ω ∣ ω = ω 1 \frac{dL}{d\omega}|_{\omega = \omega ^1} dωdLω=ω1,并且接着更新 ω 2 \omega^2 ω

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值