0%

Coursera Deep Learning笔记 逻辑回归典型的训练过程

Deep Learning 用逻辑回归训练图片的典型步骤. 学习Coursera上吴恩达老师Deep Learning第一课程前两周的笔记.

1. 处理数据

1.1. 向量化(Vectorization)

将每张图片的高和宽和RGB展为向量, 最终X的shape为 (height*width*3, m) .

1.2. 特征归一化(Normalization)

对于一般数据,使用标准化(Standardization), z_i = (x_i - mean) / delta , meandelta 代表X的均值和标准差. 最终特征处于[-1, 1]区间.

对于图片, 可直接使用Min-Max Scaling, 即将每个特征除以255(每个像素分为R, G, B, 范围在0~255)使得值处于[0, 1].

2. 初始化参数

一般将 wb 随机选择. 作业为了方便设为0了.

3. 梯度下降(Gradient descent)

根据 w , b 和训练集,来训练数据. 需要设定迭代次数与学习率.

以下为大循环(迭代次数)中内容:

3.1. 计算代价函数

对于x(i)X, 有

z(i)=wTx(i)+b

a(i)=y^(i)=sigmoid(z(i))=σ(z(i))=11+ez(i)

L(a(i),y(i))=y(i)log(a(i))(1y(i))log(1a(i))

A=(a(1),a(2),...,a(m1),a(m))=σ(wTX+b)=11+e(wTX+b)

J=1mi=1mL(a(i),y(i))=1mi=1m(y(i)log(a(i))+(1y(i))log(1a(i)))

1
2
3
4
# 激活函数
A = sigmoid(w.T.dot(X) + b)
# 代价函数
cost = -np.sum(Y * np.log(A) + (1-Y) * np.log(1 - A)) / m

3.2. 计算反向传播的梯度

即计算导数. > 注: 此处 L(a,y) 即上面公式的 L(a(i),y(i)) . 即 L(a,y)=ylog(a)(1y)log(1a) . 以下公式都省略了上标.

La=L(a,y)a=ya+1y1a

dadz=(11+ez)=ez(1+ez)2=11+ez1(1+ez)2=aa2=a·(1a)

Lz=Ladadz=(ya+1y1a)·a·(1a)=ay

Lw=Lzzw=(ay)·x

Lb=Lzzb=ay

根据 J=1mL(a,y) 最终可得:

Jw=Jaaw=1mX(AY)T

Jb=1mi=1m(a(i)y(i))

1
2
dw = X.dot((A - Y).T) / m
db = np.sum(A - Y) / m

3.3. 更新 w , b

1
2
w = w - learning_rate * dw
b = b - learning_rate * db

4. 预测测试集

使用训练出来的 w , b , 对测试集使用 y_pred = sigmoid(wx+b) , 计算得预测的概率, 对其取整, 例如大于0.7则判定为'是', 否则为'否'. Coursera作业是0.5就判定为'是', 那么使用内建函数四舍五入即可.

Powered By Valine
v1.5.2