DeepLearning.AI笔记:二、神经网络编程基础

神经网络编程基础

2.1 二分类(Binary Classification)

假设有一张图片作为输入,1(cat) vs 0(not cat)

在这里插入图片描述在计算机中保存一张图片需要RBG三种颜色的矩阵通道,如果图片像素为 64 ∗ 64 64*64 6464,那么总的向量 x x x的维度就是 n x = 64 ∗ 64 ∗ 3 = 12288 n_x=64*64*3=12288 nx=64643=12288,这就是一张图片的输入 i n p u t input input,最后再预测是 0 o r 1 0 or 1 0or1
在这里插入图片描述一些符号定义:

x = ( x 1 , . . . , x n x ) T x = (x_1,...,x_{n_x})^T x=(x1,...,xnx)T:表示一个 n x n_x nx维数据,作为输入,即 n x n_x nx维的一个列向量,
y y y:表示输出,取值是 ( 0 , 1 ) (0,1) (0,1)
( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)):表示第 i i i个input,
X = [ x ( 1 ) , . . . , x ( n ) ] ( n x , m ) X = [x^{(1)},... , x^{(n)}]_{(n_x,m)} X=[x(1),...,x(n)](nx,m):表示总的input数据,维度为 n x ∗ m n_x*m nxm
Y = [ y ( 1 ) , . . . , y ( n ) ] ( 1 , m ) Y = [y^{(1)},...,y^{(n)}]_{(1,m)} Y=[y(1),...,y(n)](1,m):表示所有数据的 L a b e l Label Label,是一个 m m m维的行向量。

在python中可以用.shape()来查看某个矩阵的形状

x = [[1,4,6],[6,2,6],[5,5,4]]
x.shape()

2.2逻辑回归(Logistic Regression)

在这里插入图片描述
G i v e n X , y ^ = P ( y = 1 ∣ x ) , 0 ≤ y ^ ≤ 1 Given X, \hat{y}= P (y=1|x),{0}\le{\hat{y}}\le{1} GivenX,y^=P(y=1x),0y^1
x ∈ R n x x \in \mathbb{R}^{n_x} xRnx
ω ∈ R n x , b ∈ R . \omega \in \mathbb{R}^{n_x} ,b \in \mathbb{R}. ωRnx,bR.
O u t p u t : y ^ = σ ( ω T x + b ) Output : \hat{y} = \sigma(\omega^{T}x + b) Output:y^=σ(ωTx+b)
在这里插入图片描述
对于 σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1函数如果 Z {Z} Z越小, σ ( z ) \sigma(z) σ(z)就越接近0, Z {Z} Z越大, σ ( z ) \sigma(z) σ(z)就越接近1.
其中,z定义为: z ( i ) = ω T x ( i ) + b z^{(i)}=\omega^{T}x^{(i)}+b z(i)=ωTx(i)+b,上标 ( i ) (i) (i)表示input训练列向量的第 i i i

2.3逻辑回归的代价函数(Cost Function of Logistic Regression)

在这里插入图片描述 y ^ ( i ) = σ ( ω T x ( i ) + b ) , σ ( z ) = 1 1 + e − z \hat{y}^{(i)}=\sigma(\omega^{T}x^{(i)}+b), {\sigma}(z)=\frac{1}{1+e{-z}} y^(i)=σ(ωTx(i)+b),σ(z)=1+ez1
我们希望模型的预测值接近目标实际值: y ^ ( i ) ≈ y ( i ) \hat{y}^{(i)} \approx{y^{(i)}} y^(i)y(i),由此引出损失函数
损失函数(误差函数):
可以用 y ^ ( i ) \hat{y}^{(i)} y^(i) y ( i ) y^{(i)} y(i)之间的平方差或者绝对值,但是在逻辑回归中通常不用它们,因为在学习逻辑回归参数的时候,很多情况下优化目标不是凸优化的,可能有很多个局部的极值点,梯度下降算法很可能找不到全局最优解。
在逻辑回归中用到的损失函数为:
L ( y ^ , y ) = − y l n ( y ^ ) − ( 1 − y ) l n ( 1 − y ^ ) L(\hat{y},y)=-yln(\hat{y})-(1-y)ln(1-\hat{y}) L(y^,y)=yln(y^)(1y)ln(1y^)

  • y = 1 y=1 y=1时,损失函数 L = − l n ( y ^ ) L=-ln(\hat{y}) L=ln(y^).
    如果希望 L L L尽可能小,那么 y ^ \hat{y} y^就要尽可能大,又 y ^ \hat y y^的取值为 [ 0 , 1 ] [0,1] [0,1],那么 y ^ \hat y y^就需要尽可能接近 1 1 1.
  • y = 0 y=0 y=0时,损失函数 L = − l n ( 1 − y ^ ) L =-ln(1-\hat y) L=ln(1y^)
    如果希望 L L L尽可能小,那么 y ^ \hat{y} y^就要尽可能小,又 y ^ \hat y y^的取值为 [ 0 , 1 ] [0,1] [0,1],那么 y ^ \hat y y^就需要尽可能接近 0 0 0.

那么当我们有 m m m个个体的数据,就需要对 m m m个损失函数求和然后除以 m m m
J ( ω , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = 1 m ∑ i = 1 m ( − y ( i ) l n ( y ^ ( i ) ) − ( 1 − y ( i ) ) l n ( 1 − y ^ ( i ) ) ) J(\omega,b)=\frac{1}{m}\sum^{m}_{i=1}L(\hat{y}^{(i)},y^{(i)})=\frac{1}{m} \sum^{m}_{i=1}(-y^{(i)}ln(\hat{y}^{(i)})-(1-y^{(i)})ln(1-\hat{y}^{(i)})) J(ω,b)=m1i=1mL(y^(i),y(i))=m1i=1m(y(i)ln(y^(i))(1y(i))ln(1y^(i)))

2.4 梯度下降(Gradient Descent)

G r a d i e n t D e s e n t : GradientDesent: GradientDesent:
R e c a p : y ^ = σ ( ω T x + b ) , σ ( z ) = 1 1 + e − z Recap:\hat{y}=\sigma(\omega^{T}x+b), {\sigma}(z)=\frac{1}{1+e{-z}} Recap:y^=σ(ωTx+b),σ(z)=1+ez1
J ( ω , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = 1 m ∑ i = 1 m ( − y ( i ) l n ( y ^ ( i ) ) − ( 1 − y ( i ) ) l n ( 1 − y ^ ( i ) ) ) J(\omega,b)=\frac{1}{m}\sum^{m}_{i=1}L(\hat{y}^{(i)},y^{(i)})=\frac{1}{m} \sum^{m}_{i=1}\left( -y^{(i)}ln(\hat{y}^{(i)})-(1-y^{(i)})ln(1-\hat{y}^{(i)})\right) J(ω,b)=m1i=1mL(y^(i),y(i))=m1i=1m(y(i)ln(y^(i))(1y(i))ln(1y^(i)))

1.如下图所示,随机初识化 w w w
在这里插入图片描述2.沿着梯度下降最快的地方一直走可以达到全局最低点
在这里插入图片描述

  • w w w的更新权值公式:
    ω : = ω − α d J ( ω ) d ω \omega:=\omega-\alpha \frac{d J(\omega)}{d \omega} ω:=ωαdωdJ(ω)
    α \alpha α:表示学习率,
    d J ( ω ) d ω \frac{d J(\omega)}{d\omega} dωdJ(ω):表示 J ( w , b ) J(w,b) J(w,b) w w w的导数
    在这里插入图片描述
    在二维平面的情况下:
    在这里插入图片描述
    该公式的更新会使J(w)逐渐向最低点逼近。
  • 同理, b b b的权值更新公式:
    b : = b − α ∂ J ( w , b ) ∂ b b:=b-\alpha \frac{\partial J(w,b)}{\partial b} b:=bαbJ(w,b)

2.5 计算图(Computation Graph)

设有 J ( a , b , c ) = 3 ( a + b c ) J(a,b,c)=3(a+bc) J(a,b,c)=3(a+bc),其中 a = 5 , b = 3 , c = 2 a=5,b=3,c=2 a=5,b=3,c=2
令:
u = b c u=bc u=bc
v = a + u v=a+u v=a+u
J = 3 v J=3v J=3v
在这里插入图片描述

计算J的导数

d J d v = 3 \frac{dJ}{dv}=3 dvdJ=3
d J d u = d J d v d v d u = 3 ∗ 1 \frac{dJ}{du}=\frac{dJ}{dv}\frac{dv}{du}=3*1 dudJ=dvdJdudv=31,
d J d a = d J d v d v d a = 3 ∗ 1 \frac{dJ}{da}=\frac{dJ}{dv}\frac{dv}{da}=3*1 dadJ=dvdJdadv=31,
d J d b = d J d u d u d b = 3 ∗ 2 = 6 \frac{dJ}{db}=\frac{dJ}{du}\frac{du}{db}=3*2=6 dbdJ=dudJdbdu=32=6
d J d c = d J d u d u d c = 3 ∗ 3 = 9 \frac{dJ}{dc}=\frac{dJ}{du}\frac{du}{dc}=3*3=9 dcdJ=dudJdcdu=33=9

在这里插入图片描述

反向传播

结合2.9中可以有形象理解

2.9 逻辑回归中的梯度下降(Logistic Regression Gradient Descent)

在这里插入图片描述
如图:在这个公式的外侧画上长方形。然后计算: y ^ = a = σ ( z ) \hat{y}=a=\sigma(z) y^=a=σ(z)也就是计算图的下一 步。最后计算损失函数 L ( a , y ) L(a,y) L(a,y)。 有了计算图,我就不需要再写出公式了。因此,为了使得 逻辑回归中最小化代价函数 L ( a , y ) L(a,y) L(a,y),我们需要做的仅仅是修改参数 w w w b b b的值。

现在让我们来讨论通过反向计算 出导数。 因为我们想要计算出的代价函数 L ( a , y ) L(a,y) L(a,y)的导数,首先我们需要反向计算出代价函 数 L ( a , y ) L(a,y) L(a,y)关于 a a a的导数,在编写代码时,你只需要用 d a da da来表示 d L ( a , y ) d a \frac{dL(a,y)}{da} dadL(a,y)。 通过微积分得到:
(1) d L ( a , y ) d a = − y a + 1 − y 1 − a = a − y   = ^   d a \frac{dL(a,y)}{da}=-\frac{y}{a}+\frac{1-y}{1-a}=a-y \ \hat{=} \ da \tag{1} dadL(a,y)=ay+1a1y=ay =^ da(1)
(2) d z   = ^   d L d z = d L d a ⋅ d a d z dz\ \hat=\ \frac{\text dL}{\text dz}= \frac{\text dL}{\text da}\cdot \frac{\text da}{\text dz} \tag{2} dz =^ dzdL=dadLdzda(2)
(3) d a d z = a ⋅ ( 1 − a ) \frac{\text da}{\text dz}=a\cdot(1-a)\tag{3} dzda=a(1a)(3)
( 3 ) (3) (3)式代入 ( 2 ) (2) (2)式,有:
(4) d L d z = a − y \frac{\text dL}{\text dz}=a-y\tag{4} dzdL=ay(4)
最后计算 w w w b b b对代价函数 J J J的影响:
(5) d ω 1   = ^   d L d ω 1 = 1 m ∑ i m x 1 ( i ) ( a ( i ) − y ( i ) ) d\omega_1\ \hat=\ \frac{dL}{d\omega_1}= \frac{1}{m}\sum_{i}^{m} {x_{1}^{(i)} (a^{(i)} -y^{(i)}) }\tag{5} dω1 =^ dω1dL=m1imx1(i)(a(i)y(i))(5)
(6) d ω 2   = ^   d L d ω 2 = 1 m ∑ i m x 2 ( i ) ( a ( i ) − y ( i ) ) d\omega_2 \ \hat=\ \frac{dL}{d\omega_2}= \frac{1}{m}\sum_{i}^{m} {x_{2}^{(i)} (a^{(i)} -y^{(i)}) }\tag{6} dω2 =^ dω2dL=m1imx2(i)(a(i)y(i))(6)
(7) d b   = ^   d L d b = 1 m ∑ i m ( a ( i ) − y ( i ) ) db\ \hat=\ \frac{dL}{db}=\frac{1}{m}\sum_{i}^{m} { (a^{(i)} -y^{(i)}) }\tag{7} db =^ dbdL=m1im(a(i)y(i))(7)

最后更新权值:
(8) w 1 = w 1 − α d L d w 1 = w 1 − α ⋅ d w 1 w_1 = w_1 - \alpha\frac{dL}{dw_1}=w_1-\alpha\cdot dw_1\tag{8} w1=w1αdw1dL=w1αdw1(8)
(9) w 2 = w 2 − α d L d w 2 = w 2 − α ⋅ d w 2 w_2 = w_2 - \alpha\frac{dL}{dw_2}=w_2-\alpha\cdot dw_2\tag{9} w2=w2αdw2dL=w2αdw2(9)
(10) b = b − α d L d b = b − α ⋅ d b b = b - \alpha\frac{dL}{db}=b-\alpha\cdot db\tag{10} b=bαdbdL=bαdb(10)

2.10 Logistic Regression on m examples代码流程

首先初始化 J = 0 ,   d w 1 = 0 ,   d w 2 = 0 ,   d b = 0 J=0,\ dw_1=0,\ dw_2 =0,\ db=0 J=0, dw1=0, dw2=0, db=0
代码流(非正式代码):

for i in range(m):
	z(i) = wx(i) + b 
	a(i) = sigmoid(z(i))
	J += - (  y(i) * log(a(i)) +( 1-y(i) ) *log(1 - a(i) ) )
	dz(i) = a(i) - y(i)  #计算dL/dz
	dw1 += x1(i) * dz(i) #计算dL/dw1
	dw2 += x2(i) * dz(i) #计算dL/dw2
	db += dz(i)          #计算dL/db
J /= m
dw1 /= m
dw2 /= m
db /= m
w = w - alpha*dw
b = b - alpha*db

以上只应用了一步梯度下降,因此需要重复上面很多次。
但这种计算中有两个缺点,也就是说应用此方法在逻辑回归上你需要编写两个for循环。第一个 for 循环是一个小循环遍历m个训练样本,第二个 for 循环是一个遍历所有特征的 for 循环。这个例子中我们只有 2 个特征,所以 n n n等于 2 并且 n x n_x nx 等于 2。 但如果你有更多特征, 你开始编写你的因此 d w 1 dw_1 dw1 d w 2 dw_2 dw2,相似的计算一直下去到 d w n x dw_{n_x} dwnx。所以看来你需要一 个 for 循环遍历所有n个特征。

2.11向量化表达(Vectorization)

假设有这么一个python的 f o r for for循环

z=0
for i in range(n_x):
 	z+=w[i]*x[i] 
 	z+=b

这样计算会很慢,但是用向量化表达则计算会很快

import numpy as np
import time
n = 1000000
w = np.random.rand(n).reshape(n,1)
x = np.random.rand(n).reshape(n,1)#通过 round 随机得到两个一百万维度的数组
z=0
t1 = time.time()
for i in range(n_x):
   z+=w[i]*x[i]
   
t2 = time.time()
print(z,'using time "%s"ms.'%((t2-t1)*1000))

[ 249835.28710158] using time "4013.7579441070557"ms.

t3 = time.time()
zz = np.dot(w.T,x) #使用向量化表达之后
t4 = time.time()
print(zz,'using time "%s"ms.'%((t4-t3)*1000))

[[ 249835.28710159]] using time "0.8718967437744141"ms.

2.13向量化逻辑回归(Vectorizing Logistic Regression)

  • 首先我们回顾一下逻辑回归的前向传播步骤:
    如果你有 m m m 个训
    练样本,然后对第一个样本进行预测,计算 z z z,公式 z ( 1 ) = w T x 1 + b z^{(1)}=w^{T}x^{1}+b z(1)=wTx1+b。然后计算激活函数 a ( 1 ) = σ ( z ( 1 ) ) a^{(1)}=\sigma(z^{(1)}) a(1)=σ(z(1)),计算第一个样本的预测值 y ^ ( 1 ) \hat y^{(1)} y^(1)。 然后对第二个样本进行预测,需要计算 z ( 2 ) = w T x 2 + b z^{(2)}=w^{T}x^{2}+b z(2)=wTx2+b a ( 2 ) = σ ( z ( 2 ) ) a^{(2)}=\sigma(z^{(2)}) a(2)=σ(z(2)) 。然后对第三个样本进行预测,需要计算 z ( 3 ) = w T x 3 + b z^{(3)}=w^{T}x^{3}+b z(3)=wTx3+b a ( 3 ) = σ ( z ( 3 ) ) a^{(3)}=\sigma(z^{(3)}) a(3)=σ(z(3)) ,依次类推。如 果你有 m 个训练样本,则需要这样做 m 次,这样太耗时。

  • 下面介绍向量化的编程方法:
    在这里插入图片描述
    核心思想是:向量化赋值,向量化运算
    i i i个个体的属性值构成的列向量:
    (2.13.1) x ( i ) = ( x ( 1 ) ( i ) x ( 2 ) ( i ) ⋮ x ( n x ) ( i ) ) \tag{2.13.1} x^{(i)}=\begin{pmatrix} x^{(i)}_{(1)} \\ x^{(i)}_{(2)}\\ \vdots\\ x^{(i)}_{(n_x)} \end{pmatrix} x(i)=x(1)(i)x(2)(i)x(nx)(i)(2.13.1)
    m个 x ( i ) x^{(i)} x(i)构成X矩阵:
    (2.13.2) X = ( x ( 1 ) , x ( 2 ) , … , x ( m ) ) ( n x , m ) \text X=\begin{pmatrix} x^{(1)} ,x^{(2)} ,\dots,x^{(m)} \end{pmatrix}_{(n_{x},m)} \tag{2.13.2} X=(x(1),x(2),,x(m))(nx,m)(2.13.2)
    参数向量 w w w是一列 n x n_x nx维的列向量:
    (2.13.3) w = ( w 1 w 2 ⋮ w m ) ( n x , 1 ) w=\begin{pmatrix} w_1\\ w_2\\ \vdots\\w_m \end{pmatrix}_{(n_x,1)} \tag{2.13.3} w=w1w2wm(nx,1)(2.13.3)
    (2.13.4) z ( i ) = w T x ( i ) + b z^{(i)}=w^{T} x^{(i)} + b\tag{2.13.4} z(i)=wTx(i)+b(2.13.4)
    m个 z ( i ) z^{(i)} z(i)构成的行向量:
    (2.13.5) Z = ( z ( 1 ) , z ( 2 ) , ⋯   , z ( m ) ) Z=\begin{pmatrix} z^{(1)},z^{(2)},\cdots,z^{(m)} \end{pmatrix} \tag{2.13.5} Z=(z(1),z(2),,z(m))(2.13.5)
    Z Z Z只需要一行代码:Z = np.dot(w.T,b)
    A为 σ ( Z ) \sigma(Z) σ(Z)是一个m维的行向量:
    (2.13.5) A = σ ( Z ) = ( a ( 1 ) , a ( 2 ) , ⋯   , a ( m ) ) A =\sigma(Z)= \begin{pmatrix} a^{(1)},a^{(2)},\cdots,a^{(m)} \end{pmatrix} \tag{2.13.5} A=σ(Z)=(a(1),a(2),,a(m))(2.13.5)

2.14 向量化Logistic回归的梯度(Vectorizing Logistic Regression’s Gradient)

第一个个体的损失函数 L ( 1 ) L^{(1)} L(1) z ( 1 ) z^{(1)} z(1)的偏导数: d L ( 1 ) d z ( 1 ) = a ( 1 ) − y ( 1 )   = ^   d z ( 1 ) \frac{dL^{(1)}}{dz^{(1)}}= a^{(1)}-y^{(1)}\ \hat= \ dz^{(1)} dz(1)dL(1)=a(1)y(1) =^ dz(1)
第二个个体的损失函数 L ( 2 ) L^{(2)} L(2) z ( 2 ) z^{(2)} z(2)的偏导数: d L ( 2 ) d z ( 2 ) = a ( 2 ) − y ( 2 )   = ^   d z ( 2 ) \frac{dL^{(2)}}{dz^{(2)}}= a^{(2)}-y^{(2)}\ \hat= \ dz^{(2)} dz(2)dL(2)=a(2)y(2) =^ dz(2)
… \dots
第m个个体的损失函数 L ( m ) L^{(m)} L(m) z ( m ) z^{(m)} z(m)的偏导数: d L ( m ) d z ( m ) = a ( m ) − y ( m )   = ^   d z ( m ) \frac{dL^{(m)}}{dz^{(m)}}= a^{(m)}-y^{(m)}\ \hat= \ dz^{(m)} dz(m)dL(m)=a(m)y(m) =^ dz(m)
Y = ( y ( 1 ) , y ( 2 ) , ⋯   , y ( m ) ) Y= (y^{(1)},y^{(2)},\cdots,y^{(m)}) Y=(y(1),y(2),,y(m))
d Z dZ dZ是一个m维的行向量,
d Z = A − Y = ( d z ( 1 ) , d z ( 2 ) , ⋯   , d z ( m ) ) dZ = A-Y = (dz^{(1)},dz^{(2)},\cdots,dz^{(m)}) dZ=AY=(dz(1),dz(2),,dz(m))

d w = 1 m ⋅ X ⋅ ( d Z ) T dw = \frac{1}{m}\cdot X \cdot ({dZ})^{T} dw=m1X(dZ)T

d b = 1 m ∑ ( d Z ) db=\frac{1}{m}\sum(dZ) db=m1(dZ)

d Z , d w , d b dZ,dw,db dZ,dw,db的定义沿用2.9节中所述。
则向量化的一次梯度更新的python代码流程为:

Z = np.dot(w.T, X) + b
A = sigma(Z)
dZ = A - Y
dw = (1/m)*X*(dZ).T
db = (1/m)*np.sum(dZ)
w = w - a * dw
b = b - a * db

最后在此基础上来个for循环m次,作m次梯度更新。

2.18 Logistic损失函数的来由(Explanation of Logistic Regression cost function)(待深入探究)

在逻辑回归中,需要预测的结果 y ^ \hat{y} y^可以表示为 y ^ = σ ( w T x + b ) \hat{y}=\sigma(w^{T}x+b) y^=σ(wTx+b), σ \sigma σ是我们熟悉的S型曲线 σ ( z ) = σ ( w T x + b ) = 1 1 + e − z \sigma(z)=\sigma(w^{T}x+b)=\frac{1}{1+e^{-z}} σ(z)=σ(wTx+b)=1+ez1。约定 y ^ = p ( y = 1 ∣ x ) \hat{y}=p(y=1|x) y^=p(y=1x),即算法的输出 y ^ \hat y y^是给定训练样本个体 x x x条件下 y = 1 y=1 y=1的概率。即:
如果 y = 1 y=1 y=1,在给定训练个体 x x x条件下算出的概率为 y ^ \hat y y^:

(2.18.1) I f    y = 1 :    p ( y ∣ x ) = y ^ If \ \ y=1: \ \ p(y|x)=\hat{y}\tag{2.18.1} If  y=1:  p(yx)=y^(2.18.1)
如果 y = 0 y=0 y=0,在给定训练个体 x x x的条件下算出的概率为 1 − y ^ 1-\hat y 1y^:
(2.18.2) I f    y = 0 :    p ( y ∣ x ) = 1 − y ^ If \ \ y=0: \ \ p(y|x)=1-\hat{y}\tag{2.18.2} If  y=0:  p(yx)=1y^(2.18.2)
整合 ( 2.18.1 ) (2.18.1) (2.18.1) ( 2.18.2 ) (2.18.2) (2.18.2)两个式子得:
(2.18.3) P ( y ∣ x ) = y ^ y ⋅ ( 1 − y ^ ) 1 − y P(y|x)=\hat{y}^{y} \cdot (1-\hat{y})^{1-y}\tag{2.18.3} P(yx)=y^y(1y^)1y(2.18.3)

两边同时取对数:
(2.18.4) L n P ( y ∣ x ) = y l n y ^ + ( 1 − y ) l n ( 1 − y ^ ) LnP(y|x) =yln\hat{y} +(1-y)ln(1-\hat{y})\tag{2.18.4} LnP(yx)=ylny^+(1y)ln(1y^)(2.18.4)
由于log函数是严格单调递增的,最大化 l n P ( y ∣ x ) lnP(y|x) lnP(yx)等价于最大化 P ( y ∣ x ) P(y|x) P(yx)并且计算 P ( y ∣ x ) P(y|x) P(yx)的对数,就是计算 l n P ( y ∣ x ) lnP(y|x) lnP(yx),即 ( 2.18.4 ) (2.18.4) (2.18.4)式。
( 2.18.4 ) (2.18.4) (2.18.4)就是前文提到的损失函数的负数,即 − L ( y ^ , y ) -L(\hat{y},y) L(y^,y)。有个负号的原因是,当我们训练学习算法时要以最大的概率预测这个值,然而在逻辑回归中我们需要最小化损失函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值