MAKE YOUR OWN NEURAL NETWORK 阅读笔记

最终成果:实现一个简单的BP三层的神经网络,实例为识别mnist上面的数字数据集

1.首先简短介绍一下神经网络的样子

生物里学到是这样的
MAKE YOUR OWN NEURAL NETWORK
然后用在计算机里面就是这样的了,生物当中的神经元会有一个阈值,达到阈值之后神经元被**再向后传播,模型当中会有一个阈值函数,本书当中使用sigmoid函数将输出控制在0~1之间
MAKE YOUR OWN NEURAL NETWORK
之后,我们要用这个模型做分类

2.再讲一下信号源如何在神经元当中传输

用一个简单的两层,每层两个的神经元做介绍
MAKE YOUR OWN NEURAL NETWORK
从上到下分别输入1.0, 0.5,每一层神经元到下一层每一个神经元的连接的阈值随机分配值,值分布在0~1之间,可以得到以下的简单模型:
MAKE YOUR OWN NEURAL NETWORK
然后我们把值带进去计算,模拟一下,计算的模型如下:
MAKE YOUR OWN NEURAL NETWORK
我们就可以得到sum input的结果
MAKE YOUR OWN NEURAL NETWORK
得到sum之后通过sigmoid函数得到最终的output y
MAKE YOUR OWN NEURAL NETWORK
但是这样计算表示起来过于复杂,引入矩阵的运算
MAKE YOUR OWN NEURAL NETWORK
通过这样运算达到了效果,也更加简介,方便调用后面代码中numpy矩阵运算的库

3.我们正向传播描述结束,接下来要讲述一下如何反向传播,修正神经元之间连接的权重

MAKE YOUR OWN NEURAL NETWORK
我们首次随机权重,定会有很大的错误,权重更大的需要更改的更多,所以我们把错误按照权重占比反向传播,最终每一条边都会分到错误的份额。接着会汇聚到神经元上,神经元得到错误的综合,然后向后继续按照权重传播。
MAKE YOUR OWN NEURAL NETWORK
MAKE YOUR OWN NEURAL NETWORK
MAKE YOUR OWN NEURAL NETWORK
到此,我们已经完成错误的分配,下面要开始update神经元之间连接的权重了

4. 使用梯度下降确定神经元之间的权重

书中的插图非常的形象,当我们要找一条下山的路时候,就是走到最低的地方,这里就类似于我们要找cost函数的最小值,我们每一次向下迈出一步的时候都会选择最陡的路。
MAKE YOUR OWN NEURAL NETWORK
我们学过如何找最陡的路,就是求偏导。在我们的反向传播的神经网络中损失函数为:MAKE YOUR OWN NEURAL NETWORK
(目前还不会用latex写数学公式,使用截图和拍照)
MAKE YOUR OWN NEURAL NETWORK
手动推导了一下,最终得到结果
MAKE YOUR OWN NEURAL NETWORK
MAKE YOUR OWN NEURAL NETWORK
MAKE YOUR OWN NEURAL NETWORK
我们拿到这个式子之后已经知道如何更新神经元之间的权值了,接下来就是写代码实现了,之后再更。
需要英文版书的call我。

相关文章:

  • 2021-10-15
  • 2021-08-30
  • 2021-10-26
  • 2021-06-06
  • 2021-11-30
  • 2021-05-25
  • 2021-09-03
  • 2021-12-04
猜你喜欢
  • 2021-05-01
  • 2021-04-15
  • 2021-11-06
  • 2021-10-21
  • 2021-05-14
  • 2021-05-15
  • 2021-11-03
相关资源
相似解决方案