李宏毅机器学习Task5

1.逻辑回归(logistic regression)

     对于给定的一个x ,我们想要得到 y ^ = P ( y = 1 ∣ x ) \hat{y}=P(y=1|x) y^=P(y=1x) ,其中, x ∈ R n x x\in R^{n_{x}} xRnx, 0 ≤ y ^ ≤ 1 0\leq \hat{y}\leq 1 0y^1

1.1损失函数

对于 y ^ ( i ) = s i g m o i d ( W T + b ) \hat{y}^{(i)}=sigmoid(W^{T}+b) y^(i)=sigmoid(WT+b),我们想要得到 y ^ ( i ) ≈ y ( i ) \hat{y}^{(i)}\approx y^{(i)} y^(i)y(i),因此定义损失函数
L ( y ^ , y ) = − y log ⁡ ( y ^ ) − ( 1 − y ) log ⁡ ( 1 − y ^ ) L(\hat{y},y)=-y\log(\hat{y})-(1-y)\log(1-\hat{y}) L(y^,y)=ylog(y^)(1y)log(1y^)

原理:
i f   y = 1 ,   L ( y ^ , y ) = − y log ⁡ ( y ^ ) ,   此 时 L ↓ ,    log ⁡ ( y ^ ) ↑ , 所 以 y ↑ if\ y =1,\ L(\hat{y},y)=-y\log(\hat{y}),\ 此时L\downarrow,\ \ \log(\hat{y})\uparrow,所以y\uparrow if y=1, L(y^,y)=ylog(y^), L,  log(y^),y

i f   y = 0 ,   L ( y ^ , y ) = − ( 1 − y ) log ⁡ ( 1 − y ^ ) ,   此 时 L ↓ ,    log ⁡ ( y ^ ) ↑ , 所 以 y ↓ if\ y =0,\ L(\hat{y},y)=-(1-y)\log(1-\hat{y}),\ 此时L\downarrow,\ \ \log(\hat{y})\uparrow,所以y\downarrow if y=0, L(y^,y)=(1y)log(1y^), L,  log(y^),y

代价函数:
J ( W , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( y ( i ) ^ ) + ( 1 − y ( i ) ) log ⁡ ( 1 − y ( i ) ^ ) ] J(W,b)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)} \log (\hat{y^{(i)}}) + (1-y^{(i)}) \log(1-\hat{y^{(i)}})] J(W,b)=m1i=1m[y(i)log(y(i)^)+(1y(i))log(1y(i)^)]

1.2梯度下降

正向传播原理如下:(以两个输入为例子)
( x 1 , x 2 , w 1 , w 2 , b ) ⟶ Z = w 1 x 1 + w 2 x 2 + b ⟶ a = σ ( Z ) ⟶ L ( a , y ) (x_1,x_2,w_1,w_2,b)\longrightarrow Z=w_1x_1+w_2x_2+b \longrightarrow a=\sigma(Z) \longrightarrow L(a,y) (x1,x2,w1,w2,b)Z=w1x1+w2x2+ba=σ(Z)L(a,y)

通过上式的的流程,我们通过所学过的链式法则,分别算出
d a = d L d a = − y a + 1 − y 1 − a da=\frac{dL}{da}=-\frac{y}{a}+\frac{1-y}{1-a} da=dadL=ay+1a1y

d z = d L d z = a − y dz=\frac{dL}{dz}=a-y dz=dzdL=ay

d w 1 = d L d w 1 = d L d z ∗ d z d w 1 = x 1 d z dw_1=\frac{dL}{dw_1}=\frac{dL}{dz}*\frac{dz}{dw_1}=x_1dz dw1=dw1dL=dzdLdw1dz=x1dz

d w 2 = d L d w 2 = d L d z ∗ d z d w 2 = x 2 d z dw_2=\frac{dL}{dw_2}=\frac{dL}{dz}*\frac{dz}{dw_2}=x_2dz dw2=dw2dL=dzdLdw2dz=x2dz

d b = d z db=dz db=dz

以上式子就是进行一次反向传播之后得到的结果,此时需要更新参数:
w : = w − α d w w:=w-\alpha dw w:=wαdw

b : = w − α d b b:=w-\alpha db b:=wαdb

1.3代码实现

 for i in np.arange(num_iter):
        # grads,cost = propagate(w, b, X, Y)
        m = X.shape[1]
        A = sigmoid(np.dot(w.T, X) + b)
        dz = A - Y
        dw = np.dot(X, dz.T) / m
        db = np.sum(dz) / m
        cost = -1 / m * np.sum(Y * np.log(A) + (1 - Y) * np.log(1 - A))
        assert (dw.shape == w.shape)
        assert (db.dtype == float)
        w = w - learnint_rate * dw
        b = b - learnint_rate * db




2.softmax

2.1原理

     上面所讲述的逻辑回归主要是用于二分类问题,输出层只有一个输出。而对于多分类问题,列如识别手写数字,需要10个输出,因此输出层需要使用softmax激活函数。

Z [ L ] = W [ L ] a [ L − 1 ] + b [ L ] Z^{[L]}=W^{[L]}a^{[L-1]}+b^{[L]} Z[L]=W[L]a[L1]+b[L]

a i [ L ] = e i [ L ] ∑ i = 1 C e z i [ L ] a_{i}^{[L]}=\frac{e_{i}^{[L]}}{\sum_{i=1}^{C}e^{z_{i}^{[L]}}} ai[L]=i=1Cezi[L]ei[L]

输出层满足 a i [ L ] a_i^{[L]} ai[L]满足:(C表示输出个数)
∑ i = 1 C a i [ L ] = 1 \sum_{i=1}^Ca_i^{[L]}=1 i=1Cai[L]=1

所有的a_i^{[L]}维度为(C,1)

2.2损失函数

利用交叉熵误差的方法,由于标签数据是one-hot的形式,因此cost可以是下面的式子:
J = 1 m ∑ i = 1 m ( − log ⁡ ( y ^ ) ) J=\frac{1}{m} \sum_{i=1}^{m}(-\log(\hat{y})) J=m1i=1m(log(y^))

2.3梯度下降

与1.2的逻辑回归梯度下降差不多,因为只有输出层不同,一个是sigmoid或者relu等激活函数,一个是softmax激活函数,通过对链式法则的理解,我们只要知道输出层的dZ就可以跟着1.2的算法推导出其他的式子了。
d z = d L d a = a − y dz=\frac{dL}{da}=a-y dz=dadL=ay
(高等数学微积分知识,草稿纸慢慢算吧,反正答案是这个)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值