zoukankan      html  css  js  c++  java
  • Machine Learning——Lesson 1笔记(李宏毅2021春机器学习)

    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/014.8k
    2017/01/024.9k
    2017/01/037.5k
    2020/12/303.4k
    2020/12/319.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

    image-20210303163837725

    而且计算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这一个未知参数):

    image-20210303204106233

    由前一个例子,可以使得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比较大,训练速度比较快,但是准确度没有小一点的高,可能误差会大一些。

    image-20210303210559053

    由上图可知,w1是如何推倒而来,重复上述过程,w会越来越优,使得Loss达到“最小值”

    Q:什么时候算是Loss达到”最小值“或者说什么时候w达到最优又或者说什么时候停下来

    A:俩种情况:

    1)失去耐心,停止计算,或者说达到了自己设定的学习次数(hyperparameters)

    2)它的微分值达到了0时,比如下图,达到了wT

    image-20210303205623086

    很明显可以看出,Gradient Descent有它的局限性,如上图,我们只找到了它的Local minima,但它并不是global minima

    但是,这其实是一个假问题,是一个幻觉

    Then 当有了俩个参数时:

    image-20210303210927624

    首先有俩个初始值,然后计算b对Loss的微分以及w对Loss的微分,然后使用上图的公式计算w1以及b1

    紧接着,重复上面的步骤,最后将得到一个最好的w*和b*,Like this:

    image-20210303213637960

    4、Linear Model

    刚刚的例子找到了w*和b*,可以使得Loss达到0.48k,这些数据是用已知数据训练得出的conclusion,我们需要的是使用这组数据去predict以后,未知的数据,随后便展开实验:

    image-20210303214752063

    很明显的可以看出,预测的值只是将真实的值向后平移了一天,因为公式是y = 0.1k + 0.97 * x1,机器几乎就是拿着前一天的数据去预测后一天的数据。

    但是仔细观察,会发现,上面的图像存在着周期性,每七天为一个轮回,每周五和周六观看人数会减少,也就是七天一个循环,那么我们可以构建一个Model,它是参考前七天的资料,所以我们要修改之前的模型,通常一个模型的修改来源于你对这个问题的理解,也就是Domain Knowledge

    image-20210303215641873

    ​ xj:第j天的观看人数(j=1-7) 给它✖️不同的weight加起来,然后加上bias,得到结果

    然后构建了一个新的模型,将前七天的观看人次都列入了考虑范围,结果看出,L与L‘都得到了改善,那么便继续将更长的天数纳入考虑范围:

    image-20210303220426230

    结果看出:当随着考虑天数的增加,这一因素的影响已经微乎其微了

    故,将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春机器学习课程](

  • 相关阅读:
    java,jenkins
    docker compose,link,Odoo
    nginx,docker反向代理
    centos7上安装docker-ce社区版
    Install Rancher server
    docker公司测试环境搭建总结
    ansible+docker
    桥接物理网卡,pipwork指定ip,外网连接,研究salt+docker
    20170605
    20170602
  • 原文地址:https://www.cnblogs.com/mr-wei977955490/p/15451354.html
Copyright © 2011-2022 走看看