一切为了数据挖掘的准备
第一章:使用神经网络识别手写数字
1.1 感知器
- 感知器:有输入x,用权重w表示相应的输入对输出的重要性,输出0或1由分配权重后的总和
∑wixi小于或大于一些阈值threshold决定。可以将感知器看作根据权重做出决定的设备。
- 设置偏置b=-threshold;wx+b <=0时输出0,wx+b > 0时输出1
- 可以用感知器来计算简单的逻辑功能
- 我们可以设计学习算法,自动调整人工神经元的权重和偏置
1.2 S型神经元
- S型神经元中,被修改为权重和偏执的微小改动只引起微小的变化。
z=wx+b
σ(z)=1+exp−z1
σ有时被称为逻辑函数,新的神经元被称为逻辑神经元
-
σ函数的平滑特性,意味着权重和偏执的微小变化会产生一个微小的输出变化。它的输出是[0,1]之间的任何实数,而不仅仅是0或1 ,可以根据输出与0.5的大小,判断“是”/“不是”的问题。
1.3 神经网络的架构
- 输入层,输入神经元
- 输出层,输出神经元
- 中间层,隐藏层
- 多层感知器/MLP:由S型神经元构成的神经网络
- 前馈神经网络:以上一层的输入作为下一层的输出。这种网络没有回路,最终的输出依赖于输入。
- 递归神经网络:有些人工神经网络的模型,反馈环路可行。设计思想:有些神经元在休眠前有限时间内被激活。这种激活状态可以刺激其它神经元在有限时间内被激活。随着时间的推移,得到一个级联的神经元激活系统。这样一个神经元的输出只在一段时间后影响它的输入,而非立即影响。
- 递归神经网络比前馈网络影响力小很多。
1.4 用梯度下降算法进行学习
1.4.1 代价函数C
C(w,b)=2n1i∑n∥∥(y(xi)−a)∥∥2
- w表示所有的网络中权重的集合
- b是所有的偏置
- n是训练输入数据的个数
- a是表示当输入为x时的输出向量,a = wx + b
- 求和是在总的训练输入x上进行的
- y是x对应的实际值
- C称为二次代价函数,有时也叫均方误差,或MSE
- 训练算法的目的:找到合适的权重和偏置,最小化代价函数C(w,b)
1.4.2 梯度下降算法
- 对于C(w,b)
ΔC≈∂w∂CΔw+∂b∂CΔb
- 梯度向量
∇C=(∂w∂C,∂b∂C)T
Δv=(Δw,Δb)T
ΔC≈∇C⋅Δv
选取:
Δv=−η∇C
wk→w′=wk−η∂wk∂C
bl→bl′=bl−η∂bl∂C
ΔC≈−η∣∣∇C∣∣2
学习速率
η是个很小的正数
- 梯度下降算法:重复的计算梯度
∇C,然后沿相反的方向移动
−η∇C,就能降低代价函数C(
ΔC< 0)
1.4.3 随机梯度下降
通过随机选取小量训练输入样本来计算
∇Cx,进而估算梯度
∇C.通过计算少量样本的平均值,快速得到一个对实际梯度很好的估算,加速梯度下降。
- 随机选取一个小批量数据。选m个训练数据,标记为
X1,
X2,
Xm
- 在当前批次数据中通过梯度下降计算权重和偏置
wk→wk′=wk−mηj∑∂wk∂CXj
bl→bl′=bl−mηj∑∂bl∂CXj
- 再挑选另一随机小批量数据训练,知道用完所有的训练输入。这被称为完成了一个训练迭代期(epoch)
1.4.4 在线/递增学习
将随机梯度下降算法中的小批量数据量设为1。即假设一个训练输入x,按照规则
wk→wk′=wk−η∂wk∂CX,
bl→bl′=bl−η∂bl∂CX更新权重为偏置;再选取另一个训练输入数据,再更新权重和偏置。
1.5 实现网络分类数字
- 下一层的输入,是上一层的输出
- 输出为wx+b应用
σ函数(将函数
σ向量化)
x′=σ(wx+b)
1.6 深度神经网络
一个网络把非常复杂的问题,分解为在但像素层面就能回答的简单问题。它通过一系列多层结构完成,在前面的网络中,它回答一些关于输入图像非常明确的问题,在后面的网络哟层,建立一个更加复杂和抽象的层级结构。包含这种多层结构–两层或更多隐藏层–的网络被称为深度神经网络