零基础入门神经网络是如何学习的

2020-03-20  本文已影响0人  半臻

最近人工智能越来越火,而深度学习是人工智能领域的重中之重。

那么什么是机器学习呢?

机器学习:计算机像人一样学习

那么机器是如何像人一样学习呢?

大家小时候应该见过这个图

一个人成长的过程就是不断犯错的过程,犯错了不要紧,只要改正过来了同样是好孩子。

机器同样,你要让机器学习就是让机器不断纠正自己的错误,最终达到目的。

那么神经网络如何进行机器学习的?

深度学习的过程

1、输入(input) 的内容 经过 前向传播(forward propagation)  获得输出(output)  

2、输出(output) 通过反向传播(back propagation) 获得误差,然后进行纠正。

循环N次,最终获得一个好的学习成绩。

那么问题来了,我么需要纠正的究竟是什么?

我们先看一下神经网络的简单模型。

这个神经网络:让机器学会辨认这图是猫还是狗?

其中:

y1 = x1*w11*W11 + x1*w12*W21  + x1*w13*W31 + x2*w21*W11+ x2*w22*W21  + x2*w23*W31

y2 = x1*w11*W12 + x1*w12*W22  + x1*w13*W32 + x2*w21*W12+ x2*w22*W22  + x2*w23*W32

y1和y2就是我们最终应该输出的结果。

[x1,x2]我们要看成一个整体,就是输入的图片

我们需要更新的就是神经网络中的权重(w)。这里的w可能为正数,也可能为负数。

通过不断的前向传播和反向传播,不断的纠正,最终获得一个不错的值。

那么我们需要解决如下几个问题。

问题1:w的初始值为多少?

w的初始值是一组随机的数,w的范围为(-1,1)

问题2:如何怎么知道我们究竟错误了多少?

就像我们看到这么一张图

如果机器认为是狗,那么他的错误不大(因为狼是犬科动物)

如果机器认为是猫,那么这个错误就大了。

问题3:我们如何量化我们的错误值?

这里就要引入一个概念。损失函数

损失函数的作用就是为了计算我们的损失值(loss)

损失函数有哪些?

1、softmax分类器

2、交叉熵损失函数(cross-entropy loss)

3、SVM损失函数

损失函数有很多,具体的计算过程这边就不多赘述了。

问题4:什么是激活函数(active function)?

没有激活函数的世界是怎样的?

没有激活函数的世界只有直线,不会拐弯,不撞南墙不回头。

这个时候激活函数就横空出世了

激活函数让线性变得非线性,激活了神经网络的活力

激活函数有哪些

1、sigmoid函数

2、tanh函数

3、ReLu函数

问题5:反向传播(back propagation)究竟是怎样的?

反向传播是深度学习重要的环节之一,他也是深度学习的一个难点

反向传播的目的就是为了让损失值下降到最低点。但是我们如何能够下降到最低点。

如何让这个人下降到最低点?

就是根据当前的导数来进行下降的。

所以就要引入一个重要概念:梯度下降

梯度下降就是让这个人下降到最低点,达到最优值。

那么我们如何计算出下降导数呢?

再看上面这个图,这个时候我们就应该用到我们的高数知识了。

多元函数链式求导法则

具体是怎么计算的这里就不多做赘述了,大家可以看高数知识。

想要知道x1对损失值(loss)的影响情况,就通过以上这个公式就可以计算出导数

最后:我们再次总结深度学习的过程

机器学习的过程

1、初始化w的值

2、输入(input)  经过 隐藏层  获得输出(output)  

3、输出经过 损失函数(loss function) 获得损失值

4、通过偏导数,计算得到输入对损失(loss) 的影响大小,进行改正

循环N次,最终获得一个好的学习成绩。

上一篇 下一篇

猜你喜欢

热点阅读