浅层神经网络总结

最近又重新温习了吴恩达的《深度学习》课程,再看一遍时还是产生了许多感悟。吴大佬的视频真的非常不错,通俗易懂,适合入门。所以我趁热打铁,写一个笔记形式的博客,表达对视频课程的理解和感悟。同时一些内容还会集合其他的书籍或博客。

什么是神经网络?

这里的神经网络是指人工神经网络 (Artificial Neural Network),它由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重。

以房价预测模型为例。给定m个样本数据{x,y}, xi x i 是第i个房屋信息,每个输入数据都是一个四维向量,对应房屋的四个指标。y是样本标签,表示对应房屋的房价。我们要用样本数据来训练一个神经网络,当给定新的房屋信息时来预测房价。已知房屋的面积(size),卧室数目(#bedrooms),房屋的邮政编码(postal code),财富水平(wealth)。构造出下面的神经网络模型:
浅层神经网络总结_第1张图片
从模型中可以看出,此网络分为输入层,隐藏层和输出层。这是一个两层神经网络,通常把输入矩阵X记为 a[0] a [ 0 ] ,把隐藏层输出记为 a[1] a [ 1 ] 。隐藏层对应的权重 W[1] W [ 1 ] 和常数项 b[1] b [ 1 ] W[1] W [ 1 ] 的维度是(4,3)。这里的4对应着隐藏层神经元个数,3对应着输入层x特征向量包含元素个数。常数项 b[1] b [ 1 ] 的维度是(4,1),这里的4同样对应着隐藏层神经元个数。

这就是基本的神经网络模型结构,每一个圆圈代表一个神经元,每一个神经元包含了一个非线性激活函数,在本模型中我们可以用 ReLU R e L U 函数作为激活函数。ReLU函数的表达式如下所示: σ(z)=max(0,z) σ ( z ) = m a x ( 0 , z )
它会对上一层的输入进行加权求和: z=wTx+b z = w T x + b ,其中w和b是模型需要学习的参数。将得到的值z送入激活函数中,最后得到的值作为这个神经元的输出。每个神经元的计算过程如下图所示:
浅层神经网络总结_第2张图片

向量化矩阵运算过程

输入矩阵X的维度为(n,m),n是单个样本的维度,本例子中维度为4。这样第一层隐藏层计算过程可以这么写:
Z[1]=W[1]X+b[1] Z [ 1 ] = W [ 1 ] X + b [ 1 ]
A[1]=σ(Z[1]) A [ 1 ] = σ ( Z [ 1 ] )
其中 A[1] A [ 1 ] 是隐藏层的输出

在训练的过程中,只要有足够的输入x和输出y,就能训练出较好的神经网络模型,该模型在此类房价预测问题中,能够得到比较准确的结果。

其他知识点

  1. 前为止,由神经网络模型创造的价值基本上都是基于监督式学习(Supervised Learning)的。
  2. 当数据量增大的时候,深度学习模型的效果会逐渐好于传统机器学习算法。
  3. 现在深度学习如此强大的原因归结为三个因素:Data,Computation,Algorithms。其中,数据量的几何级数增加,加上GPU出现、计算机运算能力的大大提升,使得深度学习能够应用得更加广泛。另外,算法上的创新和改进让深度学习的性能和速度也大大提升。

逻辑回归

逻辑回归 (Logistic Regression)模型一般用来解决二分类(Binary Classification)问题。二分类就是输出y只有{0,1}两个离散值。逻辑回归问题可以看成是一个简单的神经网络,只包含一个神经元。逻辑回归中,预测值 h^=P(y=1|x) h ^ = P ( y = 1 | x ) 表示为1的概率,取值范围在[0,1]之间。所以激活函数引入Sigmoid函数,Sigmoid函数是一种非线性的S型函数,输出被限定在[0,1]之间,通常被用在神经网络中当作激活函数(Activation function)使用。Sigmoid函数的表达式和曲线如下所示: Sigmoid(z)=11+ez S i g m o i d ( z ) = 1 1 + e − z
浅层神经网络总结_第3张图片

逻辑回归的损失函数

在设计好网络模型后,w和b都是未知参数,需要反复训练优化得到。因此,我们需要定义一个cost function,包含了参数w和b。通过优化cost function,当cost function取值最小时,得到对应的w和b。对于m个训练样本,我们通常使用上标来表示对应的样本。例如 (x(i),y(i)) ( x ( i ) , y ( i ) ) 表示第i个样本。Cost function可表示为:
J(w,b)=1mmi=1[y(i)logy^(i)+(1y^(i))log(1y^(i))] J ( w , b ) = 1 m ∑ i = 1 m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ^ ( i ) ) l o g ( 1 − y ^ ( i ) ) ] 小化Cost function,让Cost function尽可能地接近于零。

梯度下降算法

梯度下降(Gradient Descent)算法用来计算出合适的w和b值,从而最小化Cost function。梯度下降算法是先随机选择一组参数w和b值,然后每次迭代的过程中分别沿着w和b的梯度(偏导数)的反方向前进一小步,不断修正w和b。每次迭代更新w和b后,都能让J(w,b)更接近全局最小值。

正向传播与反向传播

整个神经网络的训练过程实际上包含了两个过程:正向传播(Forward Propagation)和反向传播(Back Propagation)。正向传播是从输入到输出,由神经网络计算得到预测输出的过程;反向传播是从输出到输入,对参数w和b计算梯度的过程。反向传播算法内容比较复杂,以后我会专门写一遍文章来仔细说明。

你可能感兴趣的:(深度学习)