neural networks and deep learning第一章读书笔记


一切为了数据挖掘的准备

第一章:使用神经网络识别手写数字

1.1 感知器
  • 感知器:有输入x,用权重w表示相应的输入对输出的重要性,输出0或1由分配权重后的总和 w i x i \sum{w_ix_i} 小于或大于一些阈值threshold决定。可以将感知器看作根据权重做出决定的设备。
  • 设置偏置b=-threshold;wx+b <=0时输出0,wx+b > 0时输出1
  • 可以用感知器来计算简单的逻辑功能
  • 我们可以设计学习算法,自动调整人工神经元的权重和偏置
1.2 S型神经元
  • S型神经元中,被修改为权重和偏执的微小改动只引起微小的变化。

z = w x + b z = wx + b

σ ( z ) = 1 1 + exp z \sigma(z) = \frac{1}{1+\exp^{-z}}
σ \sigma 有时被称为逻辑函数,新的神经元被称为逻辑神经元

  • σ \sigma 函数的平滑特性,意味着权重和偏执的微小变化会产生一个微小的输出变化。它的输出是[0,1]之间的任何实数,而不仅仅是0或1 ,可以根据输出与0.5的大小,判断“是”/“不是”的问题。
1.3 神经网络的架构
  • 输入层,输入神经元
  • 输出层,输出神经元
  • 中间层,隐藏层
  • 多层感知器/MLP:由S型神经元构成的神经网络
  • 前馈神经网络:以上一层的输入作为下一层的输出。这种网络没有回路,最终的输出依赖于输入。
  • 递归神经网络:有些人工神经网络的模型,反馈环路可行。设计思想:有些神经元在休眠前有限时间内被激活。这种激活状态可以刺激其它神经元在有限时间内被激活。随着时间的推移,得到一个级联的神经元激活系统。这样一个神经元的输出只在一段时间后影响它的输入,而非立即影响。
  • 递归神经网络比前馈网络影响力小很多。
1.4 用梯度下降算法进行学习
1.4.1 代价函数C

C ( w , b ) = 1 2 n i n ( y ( x i ) a ) 2 C(w,b) = \frac{1}{2n}\sum_{i}^{n} \begin{Vmatrix}(y(x_i)-a)\end{Vmatrix}^2

  • w表示所有的网络中权重的集合
  • b是所有的偏置
  • n是训练输入数据的个数
  • a是表示当输入为x时的输出向量,a = wx + b
  • 求和是在总的训练输入x上进行的
  • y是x对应的实际值
  • C称为二次代价函数,有时也叫均方误差,或MSE
  • 训练算法的目的:找到合适的权重和偏置,最小化代价函数C(w,b)
1.4.2 梯度下降算法
  • 对于C(w,b)
    Δ C C w Δ w + C b Δ b \Delta{C} \approx \frac{\partial C}{\partial w} \Delta{w} + \frac{\partial C}{\partial b} \Delta{b}
  • 梯度向量
    C = ( C w , C b ) T \nabla{C} = (\frac{\partial C}{\partial w},\frac{\partial C}{\partial b})^T
    Δ v = ( Δ w , Δ b ) T \Delta{v} = (\Delta{w},\Delta{b})^T
    Δ C C Δ v \Delta{C} \approx \nabla{C} \cdot \Delta{v}
    选取:
    Δ v = η C \Delta{v} = -\eta\nabla C
    w k w = w k η C w k w_k \rightarrow w^ \prime = w_k - \eta\frac{\partial C}{\partial w_k}
    b l b l = b l η C b l b_l \rightarrow b_l^ \prime = b_l - \eta\frac{\partial C}{\partial b_l}
    Δ C η C 2 \Delta{C} \approx -\eta \mid\mid\nabla C\mid\mid ^2
    学习速率 η \eta 是个很小的正数
  • 梯度下降算法:重复的计算梯度 C \nabla C ,然后沿相反的方向移动 η C -\eta\nabla C ,就能降低代价函数C( Δ C \Delta C < 0)
1.4.3 随机梯度下降

通过随机选取小量训练输入样本来计算 C x \nabla C_x ,进而估算梯度 C \nabla C .通过计算少量样本的平均值,快速得到一个对实际梯度很好的估算,加速梯度下降。

  • 随机选取一个小批量数据。选m个训练数据,标记为 X 1 X_1 , X 2 X_2 , X m X_m
  • 在当前批次数据中通过梯度下降计算权重和偏置
    w k w k = w k η m j C X j w k w_k \rightarrow w_k ^ \prime =w_k -\frac{\eta}{m} \sum_j \frac{\partial C_{Xj}}{\partial w_k}
    b l b l = b l η m j C X j b l b_l \rightarrow b_l ^ \prime =b_l -\frac{\eta}{m} \sum_j \frac{\partial C_{Xj}}{\partial b_l}
  • 再挑选另一随机小批量数据训练,知道用完所有的训练输入。这被称为完成了一个训练迭代期(epoch)
1.4.4 在线/递增学习

将随机梯度下降算法中的小批量数据量设为1。即假设一个训练输入x,按照规则 w k w k = w k η C X w k w_k \rightarrow w_k ^ \prime =w_k -\eta \frac{\partial C_{X}}{\partial w_k} , b l b l = b l η C X b l b_l \rightarrow b_l ^ \prime =b_l -\eta \frac{\partial C_{X}}{\partial b_l} 更新权重为偏置;再选取另一个训练输入数据,再更新权重和偏置。

1.5 实现网络分类数字
  • 下一层的输入,是上一层的输出
  • 输出为wx+b应用 σ \sigma 函数(将函数 σ \sigma 向量化)
    x = σ ( w x + b ) x^\prime = \sigma(wx+b)
1.6 深度神经网络

一个网络把非常复杂的问题,分解为在但像素层面就能回答的简单问题。它通过一系列多层结构完成,在前面的网络中,它回答一些关于输入图像非常明确的问题,在后面的网络哟层,建立一个更加复杂和抽象的层级结构。包含这种多层结构–两层或更多隐藏层–的网络被称为深度神经网络

猜你喜欢

转载自blog.csdn.net/liuerin/article/details/89016183