第二周-神经网络的编程基础
2.1 二分类问题(Binary Classification)
在神经网络的计算中,分为 前向传播(forward propagation) 和 反向传播(backward propagation) 两部分。
逻辑回归 是一个用于二分类的算法。如识别猫。
下面进行相关数学符号的说明
2.1.1符号说明
x
x
x:表示一个
n
x
n_{x}
nx维数据,为输入数据,维度为
(
n
x
,
1
)
(n_{x},1)
(nx,1)
y
y
y:表示输出结果,取值为
(
0
,
1
)
(0,1)
(0,1)
(
x
(
i
)
,
y
(
i
)
)
(x^{(i)},y^{(i)})
(x(i),y(i)):表示第
i
i
i组数据(训练/测试)
X
=
[
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
]
X=[x^{(1)},x^{(2)},...,x^{(m)}]
X=[x(1),x(2),...,x(m)]:表示所有的训练数据集的输入值,放在一个
n
x
×
m
n_{x}\times m
nx×m的矩阵中,其中
m
m
m表示样本数目
Y
=
[
y
(
1
)
,
y
(
2
)
,
.
.
.
,
y
(
m
)
]
Y=[y^{(1)},y^{(2)},...,y^{(m)}]
Y=[y(1),y(2),...,y(m)]:对应表示所有训练数据集的输出值,维度为
1
×
m
1\times m
1×m
用一对 ( x , y ) (x,y) (x,y) 来表示一个单独的样本, x x x代表 n x n_{x} nx维的特征向量, y y y表示标签(输出结果)只能为0或1。
2.2 逻辑回归(Logistic Regression)
如果只对输入数据进行线性回归,其得到的结果将不是一个在
(
0
,
1
)
(0,1)
(0,1)的值,因此引入激活函数sigmoid。
因此逻辑回归的数学意义即为
Given x, want y ^ = P ( y = 1 ∣ x ) \hat{y}=P(y=1|x) y^=P(y=1∣x)
其中 x ∈ R n x x∈R^{n_{x}} x∈Rnx , 0 ≤ y ^ ≤ 1 0\le\hat{y}\le1 0≤y^≤1
参数: w ∈ R n x w∈R^{n_{x}} w∈Rnx, b ∈ R b∈R b∈R
输出 y ^ = σ ( w T x + b ) \hat{y}=\sigma(w^{T}x+b) y^=σ(wTx+b)
2.3逻辑回归代价函数(Cost Function)
L
(
y
^
,
y
)
=
−
y
l
o
g
(
y
^
)
−
(
1
−
y
)
l
o
g
(
1
−
y
^
)
L(\hat{y},y)=-ylog(\hat{y})-(1-y)log(1-\hat{y})
L(y^,y)=−ylog(y^)−(1−y)log(1−y^)
我们通过这个称为L的损失函数,来衡量预测输出值和实际值有多接近。
代价函数的相关解释(其中倒数第三个式子 − - −改为 + + +)
2.4梯度下降法(Gradient Descent)
关于梯度下降法已有相关博客做了介绍,利用该方法求解代价函数的最小值。
2.5 逻辑回归中的梯度下降法
另外:Python相关编程技巧
- 向量化(Vectorization)去掉for循环,利用numpy库并行计算
- 合理利用Python的广播(Broadcasting in Python),使用assert提前报错
import numpy as np
A.sum(axis = 0) #矩阵按列求和 0表示列,1表示行