跳至主要內容

斯坦福机器学习笔记-第五周

yczha大约 2 分钟Machine LearningMachine Learning

这篇文章是斯坦福大学吴恩达老师机器学习课程第五周的笔记

神经网络的损失函数

首先,定义几个新的变量:

  • L=神经网络的总层数
  • sl=第l层的单元数(不含偏置项)
  • K=输出单元数

相较于逻辑回归,神经网络的区别在于输出层有多个值,这样,将逻辑回归的损失函数稍加修改,可得神经网络的损失函数:

反向传播算法(backpropagation)

反向传播算法是一个神经网络中用来最小化损失函数的术语,类似逻辑回归和线性回归中的梯度下降。

反向传播的计算流程是:

  1. 给定训练集(x(1),y(1),...,(x(m),y(m))

  2. 设定Δi,j(l):=0

  3. 对于训练样本t=1:m

    • 设定a(1):=x(t)
    • 计算前向传播的结果a(l);(l=1,2,...,L)
  4. 计算δ(L)=a(L)y(t)

  5. 使用δ(l)=[(Θ(l))Tδ(l+1)].a(l).(1a(l)) 来计算δ(L1),δ(L2),...,δ(2)

    这里g(z(l))=a(l).(1a(l))

  6. Δi,j(l):=Δi,j(l)+aj(l)δi(l+1)

    由此得到更新公式:

    Di,j(l):=1m(Δi,j(l)+λΘi,j(l));if j0

    Di,j(l):=1m(Δi,j(l));if j=0

    这里Di,j(l)=Θi,j(l)J(Θ)

梯度检验

首先使用反向传播计算梯度D(1),...,D(n),然后使用梯度估算公式计算J(Θ)ΘjJ(θ+ϵ)J(θϵ)2ϵ,通过对比两者的差即可知道梯度计算是否正确。

随机初始化

在逻辑回归中,我们使用0来初始化θ,但是在神经网络中,不能使用全0来初始化,这会导致层内的所有神经元结果都是一样的,这样就失去了使用多个神经元的意义。称这样的现象称为对称。为了打破对称,可以使用随机初始化方法。

网络架构的选择

选择网络架构,就是选择网络层数及每层的单元数。对于输入输出层,其单元数是确定的,输入层单元数就是样本的特征数,而输出层的单元数就是分类数目,然而隐藏层的层数及单元数确实不确定的,一般来说,隐藏层一般选择一层,而节点数尽可能多。还有一点就是当选择多层隐藏层时,通常让各层的单元数相同