(选学)神经网络攻防 | 机器学习预备知识(一)
在正式开始课程前,需要对一些机器学习的基础知识有一定的了解。
在正式开始课程前,需要对一些机器学习的基础知识有一定的了解。如你有机器学习基础可以跳过此部分。
下面正式开始。
我在 开篇词——你所不知道的神经网络攻防 的参考资源中选取了牛津大学2017的DeepNLP课程中的Deep Neural Networks Are Our Friends 一部分课件内容,作者为DeepMind的Wang Ling,希望能够给你一些直观的介绍。
Slides链接点击最后的原文阅读。
涉及到的概念:
-
数字
-
变量
-
操作
-
函数
-
参数
-
损失函数
-
优化器
-
梯度

Abby出场了,她有四个苹果

我们可以认为她的苹果计数为4

她的朋友Bert出场了,他有5个香蕉

可以把他们的苹果和香蕉分别设置为x和y,x,y为变量

如果Abby给了Bert一个苹果,那她还有几个苹果

4x - 1x 等于3x,x代表苹果。那Abby还有3个苹果,这里对变量进行了相减操作

现在Abby和甜饼怪开始做交易了,给他1个苹果,得到0个香蕉,给他5个苹果,得到16个香蕉,给他6个苹果,得到20个香蕉

那你如果Abby给甜饼怪3个苹果,她会得到多少个香蕉吗,怎么找到规律呢?

这里假设函数为y = wx+b,输入是苹果个数,得到的是香蕉个数,w和b是函数的参数

我们应该如何根据前面的三次交易,预测后面的交易呢?

这里他们进行了三次交易,数据集包括了这三次的交易数据 [1,0],[5,16],[6,20]

根据数据集,定义出了函数,怎么才能找到函数参数w和b的值呢

我们可以先尝试让w等于1,b=0,看看结果

我们又让w=2,b=2看看结果

我们尝试了两组w,b,得到了两组结果

这时,我们定义一个损失函数C(w,b)

损失函数是预测结果和真实结果差的平方和,可以看到右边把两次测试的值都算了出来,分别为318和68

通过比较C(1,0)和C(2,2),得出(2,2)这组参数损失小,表明它预测效果比较好

前面我们只是测试了两组参数,那应该怎么找到真正合适的参数呢

我们引出来优化器的概念,优化器就是使损失函数到达最小值

那我们应该怎么优化这个损失函数呢

让w,b不断的取值,计算损失,来找到最小值

我们得不断的尝试w,b的值,直到找到最小值。这变成了一个搜索问题。

变化0.01也不放过

负数也不放过

最后在(4,-4),损失函数是0,到达了最小值。

那w,b找到了,那x=3时,得到的香蕉是8个。我们解决了这个问题。
下面我们开始解决复杂一点的问题:识别猫

输入一张图片,判断是不是猫

在这个任务里,参数很多,样本也很多

那么多的参数,那怎么找到合适的参数使损失函数最小呢

我们针对参数的变动必须谨慎,比如上图hw为1,表示下次w+1

我们定义r为变化前后的斜率,在这里我们可以称斜率为梯度,可以求出变化后的梯度为-42

当我们把增量hw的变小之后,梯度的变化

我们把hw趋近于0的公式写出来

把损失函数替换掉

算出hw趋近于0,参数w的梯度和

算出hw趋近于0,参数b的梯度和

计算出了迭代时,下一组(w,b)的取值。

总结,这次选学内容涉及到主要涉及四个概念:数据集,模型,损失函数和优化器。下一次选学内容将介绍神经网络的基础内容,敬请关注。
往期推荐:
