本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!


神经网络和深度学习(三)- 浅层神经网络

  • 一、神经网络概述(Neural Network networks)
  • 二、神经网络的表示(Neural Network Representation)
  • 三、计算一个神经网络的输出(Computing a Neural Network's output)
  • 四、多样本向量化(Vectorizing across multiple examples)
  • 五、向量化实现的解释(Justification for vectorized implementation)
  • 六、激活函数(Activation functions)
  • 七、为什么需要非线性激活函数(Why need a nonlinear activation function)
  • 八、激活函数的导数(Derivatives of activation functions)
  • 九、神经网路的梯度下降(Gradient descent for neural networks)
  • (选)十、直观理解反向传播(Backpropagation intuition)
  • 十一、随机初始化(Random+Initialization)



第一版       2022-05-14        初稿


一、神经网络概述(Neural Network networks)

快速过一遍如何实现神经网络:

逻辑回归模型与公式建立联系

ann cnn 神经网络算法 神经网络 knn_激活函数


输入特征x,参数w和b,计算z,由z可计算a,再计算出loss function L(a,y)。

如图第3个,首先计算第一层网络中的各个节点相关的数z1,接着计算 a1,在计算下一层网络同理;我们会使用符号 [m]表示第m层网络中节点相关的数,这些节点的集合被称为第m层网络。这样可以保证 [m]不会和我们之前用来表示单个的训练样本的 (i)(即我们使用表示第i个训练样本)混淆。

二、神经网络的表示(Neural Network Representation)

ann cnn 神经网络算法 神经网络 knn_深度学习_02


首先我们观察只有一个隐藏层的神经网络,其由输入层、隐藏层、输出层组成,输入层表示为a[0],隐藏层表示为a[1],我们称上述神经网络为双层神经网路,输入层不算入。

隐藏层和输出层有两个相关的参数w和b。

三、计算一个神经网络的输出(Computing a Neural Network’s output)

ann cnn 神经网络算法 神经网络 knn_深度学习_03


圆圈代表回归计算的两个步骤,首先第一步计算z,然后计算激活函数a。图后方神经网络便是按此步骤一步一步计算的。

ann cnn 神经网络算法 神经网络 knn_深度学习_04


for循环对此过于复杂,因此w矩阵和x矩阵相乘并加上b矩阵。

ann cnn 神经网络算法 神经网络 knn_激活函数_05

四、多样本向量化(Vectorizing across multiple examples)

ann cnn 神经网络算法 神经网络 knn_机器学习_06


对于输入的特征向量x,可以用它们生成一个a[2]=yhat

ann cnn 神经网络算法 神经网络 knn_机器学习_07

五、向量化实现的解释(Justification for vectorized implementation)

ann cnn 神经网络算法 神经网络 knn_激活函数_08


ann cnn 神经网络算法 神经网络 knn_神经网络_09

六、激活函数(Activation functions)

ann cnn 神经网络算法 神经网络 knn_ann cnn 神经网络算法_10


可选择隐藏层用一个激活函数。在神经网络的正向传播中,用的是sigmoid函数,即激活函数,a=1/(1+e-z),同样可以使用g(z)函数,可以是非线性函数。tanh函数或叫双曲正切函数总比激活函数表现得好。

Relu函数比上述两个函数快的多,因为其斜率接近0时,减慢学习速度的效应。

ann cnn 神经网络算法 神经网络 knn_激活函数_11


1.sigmoid函数,除非用在二元分类的输出层,不然绝对不用。

2.tanh函数几乎在所有场合更优越

3.默认激活函数relu函数

4.leaker relu函数

如果不知道哪个好用,可先试着在保留的交叉验证集上跑跑。

七、为什么需要非线性激活函数(Why need a nonlinear activation function)

ann cnn 神经网络算法 神经网络 knn_深度学习_12


这隐藏层不能用线性激活函数,唯一可用线性激活函数的是输出层。

八、激活函数的导数(Derivatives of activation functions)

ann cnn 神经网络算法 神经网络 knn_ann cnn 神经网络算法_13


d/dz(g(z))=g(x)在z处的斜率。

ann cnn 神经网络算法 神经网络 knn_ann cnn 神经网络算法_14


ann cnn 神经网络算法 神经网络 knn_机器学习_15

九、神经网路的梯度下降(Gradient descent for neural networks)

ann cnn 神经网络算法 神经网络 knn_深度学习_16


ann cnn 神经网络算法 神经网络 knn_神经网络_17


np.sum(axis=1,keepdims=True),水平相加求和,keepdims打开是防止python直接输出这些古怪的秩为1的数组,确保输出为矩阵,维度(n,1)。

(选)十、直观理解反向传播(Backpropagation intuition)

ann cnn 神经网络算法 神经网络 knn_ann cnn 神经网络算法_18


ann cnn 神经网络算法 神经网络 knn_机器学习_19


ann cnn 神经网络算法 神经网络 knn_神经网络_20

十一、随机初始化(Random+Initialization)

ann cnn 神经网络算法 神经网络 knn_ann cnn 神经网络算法_21


若将神经网络各参数全部初始化为0,再使用梯度下降将无效。

b可以初始0,但w不能。导致a[1]_1和a[1]_2是一样的。

ann cnn 神经网络算法 神经网络 knn_ann cnn 神经网络算法_22


如果w很大,很可能在一开始训练时就落在z很大的区域,导致激活函数接近饱和,减慢了学习速度。

1


  1. 深度学习-吴恩达 ↩︎