zoukankan      html  css  js  c++  java
  • 李宏毅2021春机器学习课程笔记——Introduction of Machine/Deep Learning

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

    一、Machine Learning概念理解

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

    二、Different types of Functions

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

    三、How to find the function?

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

    1. 根据专业知识构建Model

    model (y = b + wx_1)
    输入:特征(feature)(x_1) 为2/25的播放量
    输出:(y) 为2/26的播放量
    weight w (f)要学习的参数
    bias b (f)要学习的参数

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

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

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

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

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

    • (随机)初始化Model的参数(w^0),(b^0)

    • 计算各个参数的梯度:

      (frac{partial L}{partial w}|_{w=w^0,b=b^0})

      (frac{partial L}{partial b}|_{w=w^0,b=b^0})

    • 分别更新参数(w)(b)

      (w^1 leftarrow w^0 - etafrac{partial L}{partial w}|_{w=w^0, b=b^0})

      (b^1 leftarrow b^0 - etafrac{partial L}{partial b}|_{w=w^0, b=b^0})

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

    • 直到获得(w^*)(b^*)使得(w^*,b^* = arg\, min_{w,b}L)

    四、深度学习引入

    在第三部分中,所构建的模型(y=b+wx_1),是简单的Linear model,如果遇到很复杂的情况,简单的Linear model是无法表示的,这种限制被称为Model Bias
    model bias
    如上图所示,红线表示真实的数据,蓝线表示Linear Model。三条蓝线代表权重(w)(b)不同的model,可以看出无论(w)(b)怎样变化,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:

    [egin{aligned} y &= cfrac{1}{1+e^-(b+wx_1)} \ &= c sigmoid(b+wx_1) end{aligned} ]

    函数图像如下所示:
    sigmoid function
    如下图所示,使用sigmoid函数,按照上边的步骤来表示真实情况:

    在这里插入图片描述
    当只有一个特征(x_1)时,可以得到model:

    [y = b + sum_{i}c_isigmoid(b_i+w_ix_1) ]

    当有多个特征(x_j)时,可以得到model:

    [y = b + sum_{i}c_isigmoid(b_i+sum_{j}w_{ij}x_j) ]

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

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

    定义Loss Function

    在第三步中介绍到,完成model的构建的下一步是定义Loss Function。Loss Function是关于model中未知参数的Function,在这里的未知的参数有(W,b,mathsf{b},c^{T})
    在这里插入图片描述
    如上图所示,我们将这些参数合并成一个( heta)向量,定义损失函数(L( heta))如下:

    [egin{aligned} L( heta) &= frac{1}{N}sum_{n}e_n \ &=frac{1}{N}sum_{n}(hat{y}-y) \ &=frac{1}{N}sum_{n}(hat{y}-(b^{'}+c^Tsigma(b+Wx))) end{aligned} ]

    优化参数

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

    五、总结

    1. 机器学习粗浅理解:寻找一个(f),通过输入训练数据(x),来训练(f)中的未知参数,使得(L( heta))最小,来完成我们的工作。
    2. 对于机器学习任务的分类有如下几个:
      • Classification(分类任务)
      • Regression(回归任务)
      • Structured Learning(结构学习)
        ……
    3. 构建模型的步骤:
      • 根据专业知识构建model。
      • 结合数据定义损失函数(L( heta))
      • 优化参数( heta)直到获得( heta^* = arg min_{ heta}L( heta))
    4. 一些需要理解的概念
      • 超参数(hyperparameter):模型中需要自己手动设置的参数。
      • Model Bias:指模型不能很好的表示真实情况的限制。
      • batch & epoch
      • sigmoid function:(y=cfrac{1}{1+e^{-(b+wx)}}),relu function:(y=c max(0,b+wx))
  • 相关阅读:
    尚硅谷韩顺平Linux教程学习笔记
    第15章 自动编码器
    问题总结
    日常问题记录
    SQLServer日常bug记录
    .NetCore使用NLog写入数据库总结
    C#操作XML文档
    C#中的 ?/?:/?? 三者的区别及用法
    git 命令从入门到放弃
    通过反射技术获得类中的所有属性
  • 原文地址:https://www.cnblogs.com/sykline/p/14630837.html
Copyright © 2011-2022 走看看