本文作为自己学习李宏毅老师2021春机器学习课程所做笔记,记录自己身为入门阶段小白的学习理解,如果错漏、建议,还请各位博友不吝指教,感谢!!

一、Machine Learning概念理解

Looking for Function
Machine Learning主要的任务是寻找一个合适的Function来完成我们的工作(非常不严谨的简单理解),如上图中的Image Recognition,就是要寻找一个合适的fff,实现通过对输入的图片进行各种转换识别出图片中的事物是一只猫的功能。

二、Different types of Functions

  • Regression: The function outputs a scales(连续的数值).
    例如:预测PM2.5
    Predict PM2.5
    输入:今天的PM2.5数值、温度、O3O_3O3的浓度
    Function:fff实现对PM2.5数值的预测功能
    输出:明天的PM2.5数值
  • Classification:Given options(classes), the function outputs the correct one.
    例如:垃圾邮件分类
    Spam filtering
    输入:邮件内容
    Function:事先给出类别(是垃圾邮件,不是垃圾邮件),fff实现根据输入的邮件内容,对该邮件进行分类的功能
    输出:输入邮件的类别
  • Structured Learning and more

三、How to find the function?

以预测YouTube视屏播放量为例:

1. 根据专业知识构建Model

model y=b+wx1y = b + wx_1y=b+wx1
输入:特征(feature)x1x_1x1 为2/25的播放量
输出:yyy 为2/26的播放量
weight w fff要学习的参数
bias b fff要学习的参数

2. 结合训练数据定义损失函数(Loss Function)

定义损失函数的目的是使用损失函数来评价Model效果的好坏,而需要Model:y=b+wx1y=b+wx_1y=b+wx1自己学习的参数是wwwbbb也就是weight和bias决定了Model的预测效果)。所以Loss Function是关于wwwbbb的Function,以此来评价Model的效果。

通常来说,Loss Function的值越大(损失越大),Model效果越差;Loss Function的值越小(损失越小),Model的效果越好。常见的Loss Function有如下几种:

  • mean absolute error(MAE): e=∣y−y^∣e = |y-\hat{y}|e=yy^
  • mean square error(MSE): e=(y−y^)2e = (y-\hat{y})^2e=(yy^)2
    包括损失函数的适用性有待继续补充……

3. 优化参数
此处使用随机梯度下降算法进行优化,获得让Loss Function值最小的wwwbbb。优化过程如下:

  • (随机)初始化Model的参数w0w^0w0,b0b^0b0

  • 计算各个参数的梯度:

    ∂L∂w∣w=w0,b=b0\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}wLw=w0,b=b0

    ∂L∂b∣w=w0,b=b0\frac{\partial L}{\partial b}|_{w=w^0,b=b^0}bLw=w0,b=b0

  • 分别更新参数wwwbbb

    w1←w0−η∂L∂w∣w=w0,b=b0w^1 \leftarrow w^0 - \eta\frac{\partial L}{\partial w}|_{w=w^0, b=b^0}w1w0ηwLw=w0,b=b0

    b1←b0−η∂L∂b∣w=w0,b=b0b^1 \leftarrow b^0 - \eta\frac{\partial L}{\partial b}|_{w=w^0, b=b^0}b1b0ηbLw=w0,b=b0

    其中η\etaη为学习率,是自己手动设置的一个参数。(所有需要自己手动设置的参数都称为“超参数”)

  • 直到获得w∗w^*wb∗b^*b使得w∗,b∗=arg min⁡w,bLw^*,b^* = arg\, \min_{w,b}Lw,b=argminw,bL

四、深度学习引入

在第三部分中,所构建的模型y=b+wx1y=b+wx_1y=b+wx1,是简单的Linear model,如果遇到很复杂的情况,简单的Linear model是无法表示的,这种限制被称为Model Bias
model bias
如上图所示,红线表示真实的数据,蓝线表示Linear Model。三条蓝线代表权重wwwbbb不同的model,可以看出无论wwwbbb怎样变化,Linear model都无法很好的表示红线代表的情况,这就是Model Bias

我们可以构建更加复杂灵活的模型来解决Model Bias问题:
save model bias
如上图所示,我们可以使用一组蓝线相加,来构建模型表示红线。从左到右

  1. 第一段斜率大于0的红线,可以使用1号蓝线来表示
  2. 中间斜率小于0的红线,可以使用2号蓝线来表示
  3. 第二段斜率大于0的红线,可以使用3号蓝线来表示
  4. 最后将将1,2,3号蓝线相加,在加上一个表示红线与y轴交点的constant来拟合红线。即:red curve = constant + sum of a set of blue curve

通过这种方式,只要我们使用足够多的蓝线,是可以构建出一个能很好的表示出真实曲线(红色曲线)的model的。

构建模型

在应用过程中我们可以选择sigmoid函数来作为蓝线构建model(当然也可以选择其他的函数,此处仅作举例表示)。
Sigmoid Function:
y=c11+e−(b+wx1)=csigmoid(b+wx1) \begin{aligned} y &= c\frac{1}{1+e^-(b+wx_1)} \\ &= c sigmoid(b+wx_1) \end{aligned} y=c1+e(b+wx1)1=csigmoid(b+wx1)
函数图像如下所示:
sigmoid function
如下图所示,使用sigmoid函数,按照上边的步骤来表示真实情况:

在这里插入图片描述
当只有一个特征x1x_1x1时,可以得到model:
y=b+∑icisigmoid(bi+wix1) y = b + \sum_{i}c_isigmoid(b_i+w_ix_1) y=b+icisigmoid(bi+wix1)

当有多个特征xjx_jxj时,可以得到model:
y=b+∑icisigmoid(bi+∑jwijxj) y = b + \sum_{i}c_isigmoid(b_i+\sum_{j}w_{ij}x_j) y=b+icisigmoid(bi+jwijxj)

为了有直观的理解,假设i:1,2,3; j:1,2,3,并画出图来,如下所示:

  1. bi+∑jwijxjb_i + \sum_{j}w_{ij}x_jbi+jwijxj画图表示如下:在这里插入图片描述
    使用矩阵表示作进一步简化:
    在这里插入图片描述
  2. sigmoid(bi+∑jwijxj)sigmoid(b_i+\sum_{j}w_{ij}x_j)sigmoid(bi+jwijxj)画图表示如下:
    在这里插入图片描述
  3. b+∑icisigmoid(bi+∑jwijxj)b+\sum_{i}c_isigmoid(b_i+\sum_{j}w_{ij}x_j)b+icisigmoid(bi+jwijxj)画图表示如下:
    在这里插入图片描述
    到此为止就构建了一个简单的神经网络。

定义Loss Function

在第三步中介绍到,完成model的构建的下一步是定义Loss Function。Loss Function是关于model中未知参数的Function,在这里的未知的参数有W,b,b,cTW,b,\mathsf{b},c^{T}W,b,b,cT
在这里插入图片描述
如上图所示,我们将这些参数合并成一个θ\thetaθ向量,定义损失函数L(θ)L(\theta)L(θ)如下:
L(θ)=1N∑nen=1N∑n(y^−y)=1N∑n(y^−(b′+cTσ(b+Wx))) \begin{aligned} L(\theta) &= \frac{1}{N}\sum_{n}e_n \\ &=\frac{1}{N}\sum_{n}(\hat{y}-y) \\ &=\frac{1}{N}\sum_{n}(\hat{y}-(b^{'}+c^T\sigma(b+Wx))) \end{aligned} L(θ)=N1nen=N1n(y^y)=N1n(y^(b+cTσ(b+Wx)))

优化参数

在深度学习中,往往将训练数据集随机划分为N个batch,每完成一个batch的计算,便更新一次参数θ\thetaθ,一轮(epoch)完成对所有N个batch的计算。
在这里插入图片描述

五、总结

  1. 机器学习粗浅理解:寻找一个fff,通过输入训练数据xxx,来训练fff中的未知参数,使得L(θ)L(\theta)L(θ)最小,来完成我们的工作。
  2. 对于机器学习任务的分类有如下几个:
    • Classification(分类任务)
    • Regression(回归任务)
    • Structured Learning(结构学习)
      ……
  3. 构建模型的步骤:
    • 根据专业知识构建model。
    • 结合数据定义损失函数L(θ)L(\theta)L(θ)
    • 优化参数θ\thetaθ直到获得θ∗=argminθL(θ)\theta^* = arg min_{\theta}L(\theta)θ=argminθL(θ)
  4. 一些需要理解的概念
    • 超参数(hyperparameter):模型中需要自己手动设置的参数。
    • Model Bias:指模型不能很好的表示真实情况的限制。
    • batch & epoch
    • sigmoid function:y=c11+e−(b+wx)y=c\frac{1}{1+e^{-(b+wx)}}y=c1+e(b+wx)1,relu function:y=cmax(0,b+wx)y=c max(0,b+wx)y=cmax(0,b+wx)
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐