标题:Neural Networks and Deep Learning
什么是神经网络?
神经网络是一种学习算法,受大脑工作方式的启发而产生。
Logistic Regression 逻辑回归
logistic regression
适用于二分类问题。输入一张猫的图片,判断是否为猫,就是一个二分类问题。
逻辑回归其实就是一种非常简单的神经网络:

Hypothesis:y^=σ(wTx+b),σ(z)=1+e−z1
Loss function(针对单个样本点):L(y^,y)=−ylog(y^)−(1−y)log(1−y^)
Cost function(针对整个数据集):J(w,b)=m1∑i=1mL(y^(i),y(i))
Logistic regression 的梯度下降:
计算图

计算图的思路:
- 正向计算 J 的值
- 反向求导:从右到左一一对应,分别求 dv=dvdJ,du=dudJ,da=dadJ,db=dbdJ,dc=dcdJ
用计算图来求导数其实就是用链式法则求导数。后面的小节中,吴用计算图计算了逻辑回归的导数,其实就是用链式法则推导 ∂w∂J(w,b) 和 ∂w∂J(w,b),如下图:

向量化
使用向量化可以批处理数据,并且向量化后再进行计算比直接使用 for 循环效率高很多。
向量化逻辑回归
X=[x(1)x(2)⋯x(m)]nx×m
z=[z(1)z(2)⋯z(m)]=wTX+b=[wTx(1)+bwTx(2)+b⋯wTx(m)+b]
z = np.dot(w.T,X)+b
A=[a(1),a(2),…,a(m)]=σ(z)
Shallow Neural Network 浅层神经网络

这一主题讲的是只有一个 hidden layer 的神经网络。该神经网络的前向传播、反向传播。
1. 前向传播
z[1]=W[1]x+b[1]
a[1]=σ(z[1])
z[2]=W[2]a[1]+b[2]
a[2]=σ(z[2])
W1[1]=⎣⎢⎡w11[1]w12[1]w13[1]⎦⎥⎤
z[1]=⎣⎢⎢⎢⎡z1[1]z2[1]z3[1]z4[1]⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡⋯W1[1]T⋯⋯W2[1]T⋯⋯W3[1]T⋯⋯W4[1]T⋯⎦⎥⎥⎥⎤×⎣⎡x1x2x3⎦⎤+⎣⎢⎢⎢⎡b1[1]b2[1]b3[1]b4[1]⎦⎥⎥⎥⎤
a[1]=⎣⎢⎢⎢⎡a1[1]a2[1]a3[1]a4[1]⎦⎥⎥⎥⎤=σ(z[1])
2. 反向传播
随机初始化
activation function **函数
① sigmoid
: a=1+e−z1

② tanh
: a=tanh=ez+e−zez−e−z

③ ReLU
: a=max(0,z)

④ leaky ReLU
: a=max(0.01z,z)

**函数的选择:
sigmoid 现在已经不怎么用了,在逻辑回归中可能还会用到。现在一般用到的都是 ReLU。但自己在解决问题时,如果不知道用哪个**函数,最好每个**函数都可以用一用,因为各个**函数都有各自的针对性。
为什么需要用非线性的**函数?
附录:符号约定
符号 |
描述 |
y |
输出标签 |
nx |
特征向量的维度 |
x |
特征向量 |
(x(i),y(i)) |
第 i 组数据 |
m |
样本数量 |
X=[x(1),x(2),…,x(m)]nx×m |
数据集的输入值 |
Y=[y(1),y(2),…,y(m)]1×m |
数据集的输出值 |
Mtrain |
训练集样本个数 |
Mtest |
测试集样本个数 |
Wij[l] |
l 表示第 l 层神经链接; i 表示后一层神经元的个数; j 表示前一层神经元的个数 |
Mtest |
测试集样本个数 |