(本文是DeepLearning.AI课程笔记)
一个简单的神经网络:
x=(x1,x2,x3)为自变量,Y为因变量。
神经网络应用于有监督学习。神经网络的输入可以是结构数据或非结构数据(图像,语音,文本等)不同神经网络解决不同问题,如CNN用于图像,RNN用于语音、翻译问题等。
以图像二分类问题为例。一个64px*64px的图像在计算机中可表示为3个64*64矩阵(红黄蓝矩阵)。这三个矩阵作为输入,将转化为一个 3*64*64=12288 维列向量X。y=0,1.
有m个图像作为训练集,每个training example表示为:
将 m 个 (12288维向量)组成一个
矩阵。Y则为m维行向量。
.
每个hidden unit会计算X线性组合的activation function(激活函数),可选用sigmoid函数。对单个样本:
这里
单个训练样本sigmoid函数的损失函数(lost function)是:
if
.
全部训练集的cost function是(cross entropy loss):
需要训练优化w, b以得到最小的J(w,b)。优化算法可选gradient descent (梯度下降), 重复对J(w,b)函数求偏导,神经网络的computation graph(计算图)可计算求导。
计算图是一种表示方程的图(语言),节点为变量,边为函数计算。例如:
基于链式法则,该图也可表示微分:
简单举例,自变量x为二维向量(x1, x2)单个训练样本的二分类问题,求导过程为:
根据链式法则计算lost函数对变量的偏导数
,
单个样本的损失函数:.
求偏导:
,
.
.
m个样本的损失函数:
求偏导:
.
Gradiant Descent (梯度下降,为learning rate):
.
将m个样本的计算向量化(vectorize):
,
是
向量,X是
矩阵,
是
向量, Y是
向量
X的线性组合,
计算sigmoid函数矩阵
计算偏导函数矩阵
可知:
, 是(n, 1)维向量,(
, (1,n)维向量)
神经网络的一个节点表示两步计算:
神经网络每一个layer的每个节点有单独的向量和
作为参数。第
层的第
个节点用
,举例:
对单个样本, . 是(3,1)维向量:
.
,这里
是
维向量,
是矢量
以下同上,略
做矩阵计算,则用W表示参数矩阵,这个layer的 是(4,3)维矩阵,
是(4,1)维向量。表达式简化为:
,
以向量表示layer 1输出: 是(4,1)维向量
这里
是(1,4)维向量,
,
,
是矢量
以下同上,略
做矩阵计算,W表示参数矩阵,这个layer的 是(5,4)维矩阵,
是(5,1)维向量。表达式简化为:
,
以向量表示layer 2输出:是(5,4)* (4,1)= (5,1)维向量,每个节点输出一个矢量(线性组合),因此是(5,1)
是(5,1)维向量
输出矢量
可知:layer n的参数矩阵的维度是(
,
),
是n层节点数,
是n-1层节点数,矩阵的每一行是本层每个节点的参数,行数=本层节点数;每个节点和上一层全部节点矩阵乘(线性组合),每个节点的列数是上一层节点数,列数=上一层节点数。
对m个样本,遍历进行相同计算:
for i = 1 to m :
将遍历过程转换为矩阵计算:
. 是(
,
)维矩阵,
是向量
的维数,m是样本数,每一列表示一个样本向量
. 是(
,
)维矩阵,
是layer 1的节点数, 每一列是该层每个节点和一个样本的线性组合值,这个列向量的维数=(本层节点数,1),这是因为每个节点输出一个线性组合矢量。
. 是(
,
)维矩阵,
是layer 1的节点数,
是
经过sigmoid函数计算后的值,和
维度相同。
,
是(
,
)维矩阵,
是layer 2的节点数,
...
表达式简化为矩阵式:
Forward Propagation(计算):
. (
,m)
(
,m)
. (1, m)
Backward Propagation(损失函数求导)(假设b为0):
(1,m)维向量
(1, m)* (m,
) = (1,
)维矩阵
. (
,1) * (1, m) dot (
,m) = (
,m)维矩阵
(
,m) * (m,
) = (
)维矩阵
(
)* (
,m) dot (
, m) = (
, m) 维矩阵
(
, m) * (m,
) = (
) 维矩阵
Gradient Descent (梯度下降):
,
是learning rate
Backward Propagation用Computer Graph(计算图)表示:
都是神经网络参数,W使用服从高斯分布的随机数初始化, b可初始化为0
神经网络的hyperparameters有 learning rate, #hidden layers, #hidden units, iterations, activation function, momentem, mini batch size....
除了sigmoid函数,其他激活函数有:tanh, ReLU, Leaky ReLU 等,不同的layer可有不同Activation Function
【2】DeepLearning.AI -- Neural Networks and Deep Learning
【3】Pytorch