IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021机器学习李宏毅-1 -> 正文阅读

[人工智能]2021机器学习李宏毅-1

Regression

Machine Learning

? 机器具备有学习的能力,事实上,机器学习概括来说可以用一句话来描述机器学习这件事,机器学习就是让机器具备找一个函式的能力

image-20210303140808788

那机器具备找函式的能力以后,他确实可以做很多事 举例来说

  • 语音辨识,函式的输入是声音讯号,输出是这段声音讯号的内容。我们期待凭藉著机器的力量,把这个函式自动找出来,这件事情,就是机器学习
  • 影像辨识,这个函式的输入是一张图片,他的输出是什麼呢?他是这个,图片裡面 有什麼样的内容。
  • 甚至是大家都知道的AlphaGo,其实也可以看作是一个函式,函式的输入,是棋盘上黑子跟白子的位置, 输出是机器下一步,应该落子的位置。让机器可以学习自动下围棋,就可以做一个AlphaGo。

Different types of Functions

  • Regression,Regression的意思是说,假设我们今天要找的函式,他的输出是一个数值,他的输出是一个 scalar,那这样子的机器学习的任务,我们称之為Regression(回归)。
image-20210303150319122

? 预测未来某一个时间的PM2.5的数值,机器找一个函式,这个我们用f来表示,这个函式的输出,是明天中午的PM2.5的数值,他的输入可能是种种跟预测PM2.5,有关的指数,包括今天的PM2.5的数值,今天的平均温度,今天平均的臭氧浓度等等,这一个函式可以拿这些数值当作输入,输出明天中午的PM2.5的数值,那这一个找这个函式的任务,叫作Regression。
?

  • Classification(分类),要机器做的是选择题 我们人类,先準备好一些选项 那这些选项,又叫作类别 又叫作classes,我们现在要找的函式它的输出,就是从我们设定好的选项裡面,选择一个当作输出 那这个问题,这个任务就叫作Classification。

? 垃圾邮件的侦测,这个函式的输入是一封电子邮件,那他的输出的可能的选项就是两个,是垃圾邮件 或不是垃圾邮件,Yes或者是No,那机器要从Yes跟No裡面,选一个选项出来,这个问题叫作Classification,那Classification不一定只有两个选项,也可以有多个选项 。

image-20210303150520780

? alpha go本身也是一个Classification,的问题 那只是这个Classification,他的选项是比较多的,那如果要叫机器下围棋,你想做一个 alpha go的话,我们要给机器多少的选项呢,你就想想看 棋盘上有多少个位置,那我们知道棋盘上有19乘19个位置,那叫机器下围棋这个问题 其实,就是一个有19乘19个选项的选择题,你要叫机器做的就是找一个函式,这个函式的输入是棋盘上,黑子跟白子的位置,输出就是从19乘19个选项裡面,选出一个正确的选项,从19乘19个可以落子的位置裡面,选出下一步应该要落子的位置,那这个问题也是一个分类的问题。

? 除了Regression跟Classification以外,还有一个Structured Learning,也就是机器今天不只是要做选择题,不只是输出一个数字 还要产生一个有结构的物件。举例来说,机器画一张图 写一篇文章,这种叫机器產生有结构的东西的问题,就叫作Structured Learning,那如果要讲得比较拟人化,比较潮一点 Structured Learning,你可以用拟人化的讲法说,我就是要叫机器学会创造这件事情,好那到目前為止,我们就是讲了三个机器学习的任务,Regression Classification跟Structured Learning,

Case Study

预测youtube频道的观看人数,根据一个频道过往所有的资讯去预测,它明天有可能的观看的次数是多少呢,我们能不能够找一个函式,这个函式的输入是youtube上面的后台资讯,输出就是某一天,隔天这个频道会有的总观看的次数.

image-20210303151716230

机器学习找这个函式的过程,分成三个步骤,那我们就用Youtube频道,点阅人数预测这件事情,来跟大家说明这三个步骤,是怎麼运作的

1. Function with Unknown Parameters

image-20210303152040870

写出一个,带有未知参数的函式,简单来说就是 我们先猜测一下,我们打算找的这个函式 F F F,它的数学式到底长什麼样子。举例来说,我们这边先做一个最初步的猜测,我们写成这个样子
y = b + w ? x ? y=b+w*x? y=b+w?x?

  • y y y是我们准备要预测的东西,今天这个频道总共观看的人
  • x ? x? x?是这个频道,前一天总共观看的人数, y y y x ? x? x?都是数值,
  • b跟w是未知的参数,它是准备要通过资料去找出来的,我们还不知道w跟b应该是多少,我们只是隐约的猜测

这个猜测往往就来自於,你对这个问题本质上的了解,也就是Domain knowledge,所以才会听到有人说,这个做机器学习啊,就需要一些Domain knowledge,.

? 所以我们这个能够预测未来点阅次数的函式 F F F,猜测今天的点阅次数会跟昨天的点阅次数有点关联,所以我们把昨天的点阅次数,乘上一个数值,再加上一个b做修正,当作是对今天点阅次数的预测,这是一个猜测,它不一定是对的,我们等一下回头会再来修正这个猜测。

image-20210303161120997

? 那现在总之,我们就随便猜说, y = b + w ? x ? y=b+w*x? y=b+w?x?,而b跟w是未知的,这个带有未知的==参数,这个Parameter中文通常翻成参数,这个带有Unknown的Parameter的Function 我们就叫做Model,所以我们常常听到有人说Model,这个东西在机器学习里面,就是一个带有未知的Parameter的Function,
?
? 这个 x ? x? x?是这个Function里面我们已知的,来自Youtube后台的资讯,我们已经知道昨天的点阅的总人数是多少,这个东西叫做
Feature==,而 w w w b b b是我们不知道的,它是Unknown的Parameter,那这边我们也给 w w w b b b,给他一个名字,这个跟Feature做相乘的未知的参数,这个w 我们叫它weight,这个没有跟Feature相乘的,是直接加下去的,这个我们叫它Bias,那这个只是一些名词的定义而已,等一下我们讲课的时候,我们在称呼,模型里面的每一个东西的时候,会更方便,好那这个是第一个步骤

2. Define Loss from Training Data

image-20210303161923678

? 第二个步骤,是我们要定义一个东西叫做Loss,Loss它也是一个Function,那这个Function它的输入,是我们Model裡面的参数,我们的Model叫做, y = b + w ? x ? y=b+w*x? y=b+w?x?,而 b b b w w w是未知的,Function的输入,就是 b b b w w w,这个Function输出的值代表说,现在如果我们把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好

image-20210303162101557

? 假设现在我们给未知的参数的设定 w w w是1,bias是0.5 k,用来预测未来的点阅次数,从训练资料来进行计算,在这个问题里面,我们的训练资料是一个频道过去的点阅次数,举例来说,从2017年到2020年的点阅次数,每天的这个频道的点阅次数都知道,所以那我们知道,2017年1月1号,到2020年12月31号的,点阅数字是多少,接下来我们就可以计算Loss。我们把2017年1月1号的点阅次数,代入这一个函式里面,我们已经说我们想要知道,b是0.5 k, w w w设定是1的时候,那我们就把这个 x 1 x_1 x1?代4.8 k,看它的预测出来的结果是多少,那第二天应该是4.8 k乘1加0.5 k,就是5.3 k的点阅次数,我们比对一下,现在这个函式预估的结果,跟真正的结果,它的差距有多大,这个函式预估的结果是5.3 k,真正的结果是4.9 k,那这个真实的值叫做Label,它是高估了,高估了这个频道可能的点阅人数,那就可以计算一下估测的值,跟真实的值的差距,这边**估测的值用 y y y来表示,真实的值用 y ^ \hat{y} y^?**来表示,你可以计算 y y y y ^ \hat{y} y^?之间的差距,得到一个 e 1 e_1 e1?,二者相减算出来的值是0.4 k。

image-20210303163641680

? 那这三年来每一天的误差,通通都可以算出来,每一天的误差都可以给我们一个小e,

image-20210303163837725

? 接下来我们就把每一天的误差,通通加起来,加起来然后取得平均,这个N代表我们的训验资料的个数,就是三年来的训练资料,就365乘以3,每年365天 所以365乘以3,那我们算出一个L,这L是每一笔训练资料的误差,这个e相加以后的结果,这个L就是我们的Loss,==L越大,代表我们现在这一组参数越不好,这个大L越小,代表现在这一组参数越好

e = ∣ y ? y ^ ∣ e = |y - \hat{y}| e=y?y^?,L is mean absolute error,缩写是MAE,

e = ( y ? y ^ ) 2 e = (y - \hat{y})^2 e=(y?y^?)2,L is mean square error,缩写是MSE,

有一些任务,都是机率分佈的话,选择Cross-entropy

Error Surface,调整不同的b和w,组合起来以后,都去计算它的Loss,然后就可以画出以下这一个等高线图.

image-20210303170054572

3. Optimization

? 找一个w跟b,把未知的参数,找一个数值出来,看代那一个数值进去,可以让我们的Loss的值最小,那个就是我们要找的w跟b,

image-20210303204106233

Gradient Descent
当我们w代入不同的数值的时候,我们就会得到不同的Loss,这一条曲线就是error surface。

image-20210303210559053
  • 随机选取一个初始的点,那这个初始的点,我们叫做** w ? w? w?**,假设我们随机决定的结果,是在 w 0 w_0 w0?这个地方。

  • 然后计算 ? L ? w ∣ w = w 0 \frac{\partial{L}}{\partial{w}}|_{w=w_0} ?w?L?w=w0??,如果为负,如上图的情况,那么 w w w增加,Loss会变小。除了微分这一项,还有另外一个东西会影响步伐大小,这个东西我们这边用 η η η来表示,这个 η η η叫做learning rate,叫做学习速率,这个learning rate。它是怎麼来的呢,它是你自己设定的,你自己决定这个 η η η的大小,如果 η η η设大一点,那你每次参数update就会量大,你的学习可能就比较快,如果η设小一点,那你参数的update就很慢,每次只会改变一点点参数的数值,那这种你在做机器学习,需要自己设定的东西,叫做 hyperparameters

image-20210303204024741

w 1 ← w 0 ? η ? L ? w ∣ ( w = w 0 ) w^1←w^0-η \frac{?L}{?w}|(w=w^0 ) w1w0?η?w?L?(w=w0)
反复进行刚才的操作,你就计算一下 w 1 w^1 w1微分的结果,然后再决定现在要把 w 1 w^1 w1移动多少,然后再移动到 w 2 w^2 w2,然后你再继续做同样的操作,不断的把 w w w移动位置,最后你会停下来.

训练完成

  • 最开始设置的训练次数,我的上限就是设定100万次,就我参数更新100万次以后,我就不再更新了。
  • 那还有另外一种理想上的,停下来的可能是,今天当我们不断调整参数,调整到一个地方,它的微分的值就是这一项,算出来正好是0的时候,如果这一项正好算出来是0,0乘上learning rate还是0,所以你的参数就不会再移动位置,那假设我们是这个理想的状况,我们把w?更新到w1,再更新到w2,最后更新到w?有点卡,w?卡住了,也就是算出来这个微分的值是0了,那参数的位置就不会再更新,
image-20210303205623086

缺陷:可能没有找到真正最好的解,我们没有找到那个,可以让Loss最小的那个w,在这个例子裡面,把w设定在右侧红点附近这个地方,你可以让loss最小,但是如果 Gradient Descent,是从W0这个地方,当作随机初始的位置的话,也很有可能走到WT这裡,你的训练就停住了,你就没有办法再移动w的位置。

那右侧红点这一个位置,这个真的可以让loss最小的地方,叫做global minima,而WT这个地方叫做local minima,它的左右两边,都比这个地方的loss还要高一点,但是它不是整个error surface上面的最低点。如果自己做过Gradient Descent 经验的话,其实local minima是一个假问题,

image-20210303210927624

? 刚才举的例子,是只有一个参数的例子而已,那实际上我们刚才的模型有两个参数,有w跟b,那有两个参数的情况下,如何用Gradient Descent呢?

  • 我们现在有两个参数,都给它随机的初始的值,就是 w ? w? w? b ? b? b?

  • 你要计算w跟loss的微分
    ? L ? b ∣ ( w = w 0 , b = b 0 ) \frac{?L}{?b} |(w=w^0,b=b^0 ) ?b?L?(w=w0,b=b0)

    ? L ? w ∣ ( w = w 0 , b = b 0 ) \frac{?L}{?w} |(w=w^0,b=b^0 ) ?w?L?(w=w0,b=b0)

  • 更新参数

    w 1 ← w 0 ? η ? L ? w ∣ ( w = w 0 , b = b 0 ) w^1←w^0-η \frac{?L}{?w} |(w=w^0,b=b^0 ) w1w0?η?w?L?(w=w0,b=b0)

b 1 ← b 0 ? η ? L ? b ∣ ( w = w 0 , b = b 0 ) b^1←b^0-η \frac{?L}{?b} |(w=w^0,b=b^0 ) b1b0?η?b?L?(w=w0,b=b0)

更新完得到 w ? w^* w? b ? b^* b?.

image-20210303213346442

更新参数的方向如图,把w跟b更新的方向结合起来,就是一个向量,就是这个红色的箭头,我们就从这个位置移到这个位置

image-20210303213637960

Linear Model

image-20210303214426647 image-20210303214752063
  • 横轴是代表的是时间,所以0这个点 最左边的点,代表的是2021年1月1号,最右边点,代表的是2021年2月14号

  • 纵轴就是观看的人次,这边是用千人当作单位,

  • 红色的线真实的观看人次

  • 蓝色的线是机器用这一个函式,预测出来的观看人次

    根据图中的数据,我们看出来每隔七天一个循环,每个礼拜五礼拜六,看的人就是特别少。所以既然我们已经知道每隔七天,就是一个循环,那这一个式子 这一个model,显然很烂,因为它只能够看前一天。每隔七天它一个循环,如果我们一个模型,它是参考前七天的资料,把七天前的资料,直接复制到拿来当作预测的结果,也许预测的会更准也说不定,所以我们就要修改一下我们的模型,通常一个模型的修改,往往来来自你对这个问题的理解,也就是Domain Knowledge

image-20210303215641873

image-20210303220220964 image-20210303220426230

Regression P2

Piecewise Linear Curves

? 我们可以想像说 x1 跟 y,也许它中间有比较复杂的关係,对 Linear Model 来说, x 1 x_1 x1? y y y的关係就是一条直线, x 1 x_1 x1?越来越大,y就应该越来越大,设定不同的w和b,改变这一条蓝色的直线,跟 y 轴的交叉点,但是无论你怎么改w跟 b,它永远都是一条直线,永远都是 x 1 x_1 x1?越大 y y y越大,前一天观看的人数越多,隔天的观看人数就越多

image-20210304105220371

? 但也许现实并不是这个样子

  • 也许在 x 1 x_1 x1?小于某一个数值的时候,前一天的观看人数跟隔天的观看人数是成正比,
  • 也许当 x 1 x_1 x1?大于一个数值的时候,这个物极必反。假设 x 1 x_1 x1?很大,前天观看的人数太高,那隔天观看人数就会变少也说不定
  • 也许 x 1 x_1 x1? y y y中间,有一个比较复杂的,像这个红色线一样的关系

? 但你不管怎么设置w 跟 b,无法用 Linear Model制造出红色那一条线,显然 Linear Model 有很大的限制, 叫做**Model 的 Bias**,

? 所以我们需要写一个更复杂的,更有弹性的,有未知参数的 Function,

image-20210304110501797

? 我们可以观察一下红色的这一条曲线,它可以看作是一个常数,再加上一群蓝色的这样子的 Function,.

image-20210305105846439

这个蓝色的 Function,它的特性是

  • 当输入的值,当 x 轴的值小于某一个这个 Flash Hold 的时候,它是某一个定值,
  • 大于另外一个 Flash Hold 的时候,又是另外一个定值,
  • 中间有一个斜坡

? 那怎麼加上这个蓝色的 Function 以后,变成红色的这一条线?

image-20210305112252045

? 所以红色这个线,可以看作是一个常数,再加上一堆蓝色的 Function

image-20210305125221397

? 你现在这个 Curves 啊,它是有很多线段所组成的,它是有很多锯齿状的线段所组成的,这个叫做 Piecewise Linear 的 Curves,那你会发现说这些 Piecewise Linear 的 Curves,你有办法用常数项,加一大堆的蓝色 Function 组合出来,只是他们用的蓝色 Function 不见得一样,你要有很多不一样的蓝色 Function,加上一个常数以后,你就可以组出这些 Piecewise Linear 的 Curves。那如果你今天 Piecewise Linear 的 Curves 越复杂,也就是这个转折的点越多啊,那你需要的这个蓝色的 Function 就越多

image-20210305125421864

? 如果是这样的曲线,在这样的曲线上面,先取一些点,再把这些点点起来,变成一个 Piecewise Linear 的 Curves,而这个 Piecewise Linear 的 Curves 跟原来的曲线,它会非常接近,如果你今天点取的够多,或你点取的位置适当的话,这个 Piecewise Linear 的 Curves,就可以逼近这一个,连续的这一个曲线,就可以逼近这一个不是 Piecewise Linear,它是有角度的 有弧度的这一条曲线。

? 所以我们今天知道一件事情,你可以用 Piecewise Linear 的 Curves,去逼近任何的连续的曲线,而每一个 Piecewise Linear 的 Curves,又都可以用一大堆蓝色的 Function 组合起来,也就是说,我只要有足够的蓝色 Function 把它加起来,我也许就可以变成任何连续的曲线

? 所以今天,假设我们的 x 跟 y 的关係,它也许非常地复杂,那也没关係,我们就想办法写一个带有未知数的 Function,这个带有未知数的 Function 它表示的,就是一堆蓝色的 Function,加上一个 Constant,那我们接下来要问的问题就是,这一个蓝色 Function,它的式子应该要怎麼把它写出来呢?

image-20210305125845178

曲线的表达形式,函数式子
y = c 1 1 + e ? ( b + w x 1 ) y=c \frac{1}{1+e^{-(b+wx_1)}} y=c1+e?(b+wx1?)1?

  • x 1 x_1 x1?趋近于无穷大的,那 e ? ( b + w x 1 ) e^{-(b+wx_1)} e?(b+wx1?)趋近于0, y y y趋近于c
  • x 1 x_1 x1?趋近于无穷小的,那 e ? ( b + w x 1 ) e^{-(b+wx_1)} e?(b+wx1?)趋近于无穷, y y y趋近于0

y = c ? s i g m o i d ( b + w x 1 ) y=c*sigmoid(b+wx_1 ) y=c?sigmoid(b+wx1?)

sigmoid的函数特性

image-20210305132035492 $$ y=c \frac{1}{1+e^{-(b+wx_1)}} $$ ? 调整这裡的 b 跟 w 跟 c,你就可以制造出各种不同形状的 Sigmoid Function,用各种不同形状的 Sigmoid Function,去逼近这个蓝色的 Function.
  • 如果你今天改 w w w 你就会改变斜率你就会改变斜坡的坡度
  • 如果你动了 $b $ 你就可以把这一个 Sigmoid Function 左右移动
  • 如果你改 c c c 你就可以改变它的高度

? 所以你只要有不同的 w 不同的 b 不同的 c,你就可以制造出不同的 Sigmoid Function,把不同的 Sigmoid Function 叠起来以后,你就可以去逼近各种不同的,Piecewise Linear 的 Function,然后 Piecewise Linear 的 Function,可以拿来近似各种不同的 Continuous 的 Function

image-20210305134454023

? 所以假设我们要把红色的这条线,函数式子。

y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) y = b + \sum_i {c_isigmoid(b_i+w_ix_1 )} y=b+i?ci?sigmoid(bi?+wi?x1?)
image-20210305135651731

? 减少 Model 的 Bias ,我们可以写一个更有弹性的,有未知参数的 Function,它叫做 y = b + ∑ i c i s i g m o i d ( b i + w i x 1 ) y=b + \sum_i {c_isigmoid(b_i+w_ix_1 )} y=b+i?ci?sigmoid(bi?+wi?x1?) 本来这边是 b + w x 1 b+wx_1 b+wx1?,这边变成 b i + w i x 1 b_i+w_ix_1 bi?+wi?x1?,我们只要带入不同的 c 不同的 b 不同的 w,我们就可以变出各式各样,就可以组合出各式各样不同的 Function

image-20210305135850892

? 我们先考虑一下j是1、2、3

image-20210305143317386

? 这个得到的式子就是这个样子,所以这边我们 w i j w_{ij} wij? ,来代表在第 i 个 Sigmoid 里面,乘给第 j 个 Feature 的 Weight,第一个 Feature 它就是 w11,第二个 Features 就是乘 w12,第三个 Feature 都是乘 w13,所以三个 Features1 2 3,这个 w 的第二个下标就是 123,w 的第一个下标代表是,现在在考虑的是第一个 Sigmoid Function,那我们有三个 Sigmoid Function,

image-20210305144019248 image-20210305144614449

矩阵相乘的方法来表示:

image-20210305144734507

矩阵相乘的简化表示:

image-20210305145226366

? 那把它改成线性代数比较常用的表示方式,x 乘上矩阵 w 再加上向量 b,会得到一个向量叫做 r,表示向量式。

? image-20210305150004077

整个过程的表达式:

image-20210305163500058

? 重新定义一下我们的未知参数,

image-20210305163746820

统称我们所有的未知的参数,我们就一律统称 θ θ θ

loss from training data

image-20210305205139367

? 我们现在的 Loss Function 就变成 L ( θ ) L( θ ) L(θ)

image-20210305212017162

? 这个 Loss Function 要问的就是,这个 θ 如果它是某一组数值的话,会有多不好或有多好,那计算的方法和之前的相同。所有的误差通通加起来,你就得到你的 Loss

Optimization

image-20210305212810760

? θ θ θ表示成 θ 1 θ_1 θ1? θ 2 、 θ_2、 θ2? θ 3 θ_3 θ3?等等,找一组 θ θ θ使Loss 越小越好。可以让 Loss 最小的那一组 θ θ θ, θ ? = a r g m i n L θ^* = arg min L θ?=argminL

参数更新的过程。

image-20210305214435531

数据训练的过程:

image-20210305215914525

数据训练过程的中的概念定义:

? image-20210305220118548

  • Epoch:所有训练样本都已输入到模型中,称为一个Epoch

  • Batchsize: 批大小,决定一个Epoch有多少个batch

##激活函数

? 这个 Hard 的 Sigmoid,我刚才说它的函式有点难写出来,其实也没有那麼难写出来,它可以看作是两个 Rectified Linear Unit 的加总,所谓 Rectified Linear Unit 它就是长这个样

image-20210305220759937

? 它有一个水平的线,走到某个地方有一个转折的点,然后变成一个斜坡,那这种 Function 它的式子,写成
c ? m a x ( 0 , b + w x 1 ) c* max(0, b + wx_1) c?max(0,b+wx1?)
? 每条不同的 w 不同的 b 不同的 c,你就可以挪动它的位置,你就可以改变这条线的斜率,那这种线呢在机器学习裡面,我们叫做 Rectified Linear Unit,它的缩写叫做 ReLU,名字念起来蛮有趣的,它真的就念ReLU

image-20210305221723518

? 那你把两个 ReLU 叠起来,就可以变成 Hard 的 Sigmoid,你想要用 ReLU 的话,就把 Sigmoid 的地方,换成$ max(0, b_i + w_i{_j}x_j)$。

? 表示一个 Hard 的 Sigmoid,表示那个蓝色的 Function 不是只有一种做法,你完全可以用其他的做法,好 那这个 Sigmoid 或是 ReLU,他们在机器学习裡面,我们就叫它 Activation Function,他们是有名字的,他们统称为Activation Function.

? 当然还有其他常见的,还有其他的 Activation Function,但 Sigmoid 跟 ReLU,应该是今天最常见的 Activation Function,那哪一种比较好呢,这个我们下次再讲,哪一种比较好呢,我接下来的实验都选择用了 ReLU,显然 ReLU 比较好。

? 根据真实的数据进行试验:

? image-20210305222316873

? 继续改我们的模型,通过如下图的试验。

image-20210305222735833

? 每次都加 100 个 ReLU,那我们就是 Imput Features,就是 56 天前的资料

image-20210305223132264
  • 如果是只做一次,就那个乘上 w 再加 b,再通过 ReLU 或 Sigmoid,这件事只做一次的话,这是我们刚才看到的结果
  • 两次,这个 Loss 降低很多,0.28k 降到 0.18k,没看过的资料上也好了一些
  • 三层,又有进步,从 0.18k 降到 0.14k,所以从一层到 从就是乘一次 w,到通过一次 ReLU,到通过三次 ReLU,我们可以从 0.28k 到 0.14k,在训练资料上,在没看过的资料上,从 0.43k 降到了 0.38k,看起来也是有一点进步的,

? 那这个是那个真实的实验结果啦,就我们来看一下,今天有做通过三次 ReLU 的时候,做出来的结果怎麼样

image-20210305223342800

? 横轴就是时间,纵轴是观看的人次 是千人,红色的线代表的是真实的数据,蓝色的线是预测出来的数据

? 那你会发现说,在这种低点的地方啊,你看红色的数据是每隔一段时间,就会有两天的低点,在低点的地方,机器的预测还算是蛮準确的,那这边有一个神奇的事情,这个机器高估了真实的观看人次,尤其是在这一天,这一天有一个很明显的低谷,但是机器没有预测到这一天有明显的低谷,它是晚一天才预测出低谷。这天最低点就是除夕啊,谁除夕还学机器学习 对不对,好 所以当然对机器来说,你不能怪它,它根本不知道除夕是什麼,它只知道看前 56 天的值,来预测下一天会发生什麼事,所以它不知道那一天是除夕,所以你不能怪它预测地不准,这一天就是除夕。

Deep Learning

? Sigmoid 或 ReLU,它们叫做 Neuron,我们这边有很多的 Neuron,很多的 Neuron 就叫做 Neural Network。每一排 Neural 我们就叫它一个 Layer,它们叫 Hidden Layer,有很多的 Hidden Layer 就叫做 Deep,这整套技术就叫做 Deep Learning

image-20210305223838837

? 就是这样来的,好 所以人们就开始,把类神经网路越叠越多 越叠越深,12 年的时候有一个 AlexNet,它有 8 层 它的错误率是 16.4%,两年之后 VGG 19层,错误率在影像辨识上进步到 7.3 %,这个都是在影像辨识上一个,这个基準的资料库上面的结果,后来 GoogleNet 有错误率降到 6.7%,有 22 层。

image-20210305224148870

? Residual Net 有 152 层啊,它比 101 还要高啊。我们想要用 ReLU 或者是 Sigmoid,去逼近一个复杂的 Function,实际上只要够多的 ReLU 够多的 Sigmoid,就可以逼近任何的 连续的 Function ,我们只要有够多的 Sigmoid,就可以知道够复杂的线段,就可以逼近任何的 Continuous Function,所以我们只要一排 ReLU 一排 Sigmoid,够多就足够了。

? Network为4层的情况:

image-20210305224552091

? 4 层在训练资料上的 Loss 是 0.1k,在没有看过 2021 年的资料上,是如何呢 是 0.44k。在训练资料上,3 层比 4 层差,但是在没看过的资料上,4 层比较差,3 层比较好。这种训练资料跟没看过的资料造成的结果不一致的状况,这个状况叫做 Overfitting,机器学习会发生 Overfitting 的问题,指的就是在训练资料上有变好,但是在没看过的资料上没有变好这件事情。

image-20210305224852593
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:33:09  更:2021-08-24 15:34:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:43:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码