深度学习一《Neural Networks and Deep Learning》第二节 吴恩达

2.1 二分分类(Binary Classification)

Binary Classification: 目标是训练一个分类器,输入为一个图片的特征向量X,输出为预测的结果(0或者1)

  • example : 输入图片像素矩阵为64*64,则RGB三通道值均为64*64的矩阵,则特征向量X则为 64*64*3维列向量,则输入向量X的总维度 n n n n x n_x nx=64*64*3 = 12288

Notation :

  • (x,y)表示一个单独的样本,其中x是 n x n_x nx维的特征向量,y ∈ \in {0,1}
  • m表示训练样本的数量, ( x ( 1 ) , y ( 1 ) ) (x^{(1)},y^{(1)}) (x(1),y(1))表示第一个样本的输入和输出, ( x ( 2 ) , y ( 2 ) ) (x^{(2)},y^{(2)}) (x(2),y(2))表示第二个样本的输入和输出,…, ( x ( m ) , y ( m ) ) (x^{(m)},y^{(m)}) (x(m),y(m))表示第m个样本的输入和输出
    • m也可以写作 m t r a i n m_{train} mtrain ,如果是测试集,m也可写作 m t e s t m_{test} mtest,即 m t e s t m_{test} mtest = # test examples
  • X = [ x ( 1 ) x ( 2 ) x ( 3 ) ⋯ x ( m ) ] X = \begin{bmatrix}x^{(1)}&x^{(2)}&x^{(3)}&\cdots&x^{(m)}\end{bmatrix} X=[x(1)x(2)x(3)x(m)],其中 x ( i ) ∈ R n x x^{(i)}\in\mathbb{R^{n_x}} x(i)Rnx
    • X是 n x n_x nx* m的矩阵,即 X ∈ R n x ∗ m X\in\mathbb{R^{n_x*m}} XRnxm
    • 在python中,X.shape = ( n x n_x nx,m)
  • Y = [ y ( 1 ) y ( 2 ) y ( 3 ) ⋯ y ( m ) ] Y = \begin{bmatrix}y^{(1)}&y^{(2)}&y^{(3)}&\cdots&y^{(m)}\end{bmatrix} Y=[y(1)y(2)y(3)y(m)],其中 y ( i ) ∈ y^{(i)}\in y(i){0,1}
    • Y ∈ R 1 ∗ m Y\in\mathbb{R^{1*m}} YR1m
    • 在python中,Y.shape = (1,m)

2.2 逻辑回归(Logistic Regression)

logistic回归是一个在监督学习中用于二分分类的算法

logistic回归 :

  • 给定x,想要得到 y ^ = P ( y = 1 ∣ x ) \widehat{y} = P(y=1|x) y =P(y=1x),其中 x ∈ R n x x\in\mathbb{R^{n_x}} xRnx 0 ≤ y ^ ≤ 1 0\leq\widehat{y}\leq1 0y 1
  • 参数: w ∈ R n x w\in\mathbb{R^{n_x}} wRnx b ∈ R b\in\mathbb{R} bR
  • 输出: y ^ = σ ( w T x + b ) \widehat{y} = \sigma(w^Tx+b) y =σ(wTx+b)
    • sigmoid函数 σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+ez1,如果z很大,则 σ ( z ) \sigma(z) σ(z)约等于1,如果z是很大的负数,则 σ ( z ) \sigma(z) σ(z)约等于0
    • 用sigmoid函数使 0 ≤ y ^ ≤ 1 0\leq\widehat{y}\leq1 0y 1
    • sigmoid函数图形如下sigmoid函数图形

Notation :

  • 在其他课程中,x会补一列 x 0 = 1 x_0=1 x0=1,此时的输入矩阵 x ∈ R n x + 1 x\in\mathbb{R^{n_x+1}} xRnx+1 y ^ = σ ( θ T x ) \widehat{y} = \sigma(\theta^Tx) y =σ(θTx)
  • θ = [ θ 0 θ 1 θ 2 ⋮ θ n x ] \theta = \begin{bmatrix}\theta_0\\\theta_1\\\theta_2\\\vdots\\\theta_{n_x}\end{bmatrix} θ=θ0θ1θ2θnx,其中 θ 0 \theta_0 θ0就是b, θ 1 , θ 2 , ⋯   , θ n x \begin{matrix}\theta_1,\theta_2,\cdots,\theta_{n_x}\end{matrix} θ1,θ2,,θnx就是这里的w

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

为了训练出logistic回归中的w和b参数,需要定义一个代价函数(cost function)

Logistic Regression Cost Function :

  • y ^ ( i ) = σ ( w T x ( i ) + b ) \widehat{y}^{(i)} = \sigma(w^Tx^{(i)}+b) y (i)=σ(wTx(i)+b),where σ ( z ( i ) ) = 1 1 + e − z ( i ) \sigma(z^{(i)}) = \frac{1}{1+e^{-z^{(i)}}} σ(z(i))=1+ez(i)1 and z ( i ) = w T x ( i ) + b z^{(i)}=w^Tx^{(i)}+b z(i)=wTx(i)+b
  • 给定一组训练集 { ( x ( 1 ) , y ( 1 ) ) , ⋯   , ( x ( m ) , y ( m ) ) (x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)}) (x(1),y(1)),,(x(m),y(m))} , 想要得到 y ^ ( i ) ≈ y ( i ) \widehat{y}^{(i)} \approx y^{(i)} y (i)y(i)
  • Loss(error) Function : L ( y ^ , y ) \mathscr{L}(\widehat{y},y) L(y ,y)衡量预测输出值 y ^ \widehat{y} y 和实际输出值y的接近程度
    L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) \mathscr{L}(\widehat{y},y) = -(ylog\widehat{y}+(1-y)log(1-\widehat{y})) L(y ,y)=(ylogy +(1y)log(1y ))
    • 当 y = 1时, L ( y ^ , y ) = − l o g y ^ \mathscr{L}(\widehat{y},y) = -log\widehat{y} L(y ,y)=logy ,想要 l o g y ^ log\widehat{y} logy 更大,需要 y ^ \widehat{y} y 更大,又 0 ≤ y ^ ≤ 1 0\leq\widehat{y}\leq1 0y 1,所以 y ^ \widehat{y} y 要趋近于1
    • 当 y = 0时, L ( y ^ , y ) = − l o g ( 1 − y ^ ) \mathscr{L}(\widehat{y},y) =-log(1-\widehat{y}) L(y ,y)=log(1y ),想要 l o g ( 1 − y ^ ) log(1-\widehat{y}) log(1y ) 更大,需要 y ^ \widehat{y} y 更小,又 0 ≤ y ^ ≤ 1 0\leq\widehat{y}\leq1 0y 1,所以 y ^ \widehat{y} y 要趋近于0
    • TIPS : 损失函数这个说法只适用于单个训练样本
  • Cost Function :
    J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) ) ] J(w,b) = \frac{1}{m}\sum_{i=1}^m\mathscr{L}(\widehat{y}^{(i)},y^{(i)}) = - \frac{1}{m}\sum_{i=1}^m[y^{(i)}log\widehat{y}^{(i)}+(1-y^{(i)})log(1-\widehat{y}^{(i)})] J(w,b)=m1i=1mL(y (i),y(i))=m1i=1m[y(i)logy (i)+(1y(i))log(1y (i))]
    • TIPS : 代价函数这个说法是基于整个训练集的术语

2.4 梯度下降法(Gradient Descent)

Gradient Descent:

  • 从初始化的某一点朝着下降速度最快的方向直到收敛到局部最优解。在这里,我们用梯度下降法来找到使代价函数 J(w,b) 最小的 w 和 b 值
  • 由于 J ( w , b ) = − 1 m ∑ i = 1 m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) ) ] J(w,b) = - \frac{1}{m}\sum_{i=1}^m[y^{(i)}log\widehat{y}^{(i)}+(1-y^{(i)})log(1-\widehat{y}^{(i)})] J(w,b)=m1i=1m[y(i)logy (i)+(1y(i))log(1y (i))],是个凸函数(convex function) ,所以梯度下降法找到的局部最优解就是 J(w,b) 的全局最优解
  • Repeat w : = w − α ∂ J ( w , b ) ∂ w w := w - \alpha\frac{\partial J(w,b)}{\partial w} w:=wαwJ(w,b) b : = b − α ∂ J ( w , b ) ∂ b b := b - \alpha\frac{\partial J(w,b)}{\partial b} b:=bαbJ(w,b)其中 α \alpha α称作学习率(learning rate)
    • 以后课程中,统一使用 d w dw dw来代替 ∂ J ( w , b ) ∂ w \frac{\partial J(w,b)}{\partial w} wJ(w,b),用 d b db db来代替 ∂ J ( w , b ) ∂ b \frac{\partial J(w,b)}{\partial b} bJ(w,b)

2.5 导数(Derivatives)

导数的物理意义:函数的斜率(slope = height / width)
对于直线来说,每个点的斜率都相同,即直线的导数是一个常数

2.6 更多导数的例子(More derivaitives examples)

一些导数不为常数的例子:

  • f ( a ) = a 2 f(a)=a^2 f(a)=a2 d f ( a ) d a = 2 a \frac{{\rm d}f(a)}{{\rm d}a}=2a dadf(a)=2a
  • f ( a ) = a 3 f(a)=a^3 f(a)=a3 d f ( a ) d a = 3 a 2 \frac{{\rm d}f(a)}{{\rm d}a}=3a^2 dadf(a)=3a2
  • f ( a ) = l o g e ( a ) / l n ( a ) f(a)=log_e(a) / ln(a) f(a)=loge(a)/ln(a) d f ( a ) d a = 1 a \frac{{\rm d}f(a)}{{\rm d}a}=\frac{1}{a} dadf(a)=a1

2.7 计算图(Computation Graph)

Example :
computation_graph

2.8 使用计算图求导(Derivatives with a Computation Graph)

Computing derivatives
Computing derivatives

  • Final Output Variable : 计算图中的最后一个变量,如上图所示,J就是FinalOutputVariable
  • d F i n a l O u t p u t V a r i a b l e d v a r \frac{{\rm d}FinalOutputVariable}{{\rm d}var} dvardFinalOutputVariable 可以简写为 dJ/dvar,又因为总是对J求导,在程序中,我们可以简写为dvar
  • Chain Rule :链式法则,即 d J d a = d J d v d v d a \frac{{\rm d}J}{{\rm d}a} =\frac{{\rm d}J}{{\rm d}v}\frac{{\rm d}v}{{\rm d}a} dadJ=dvdJdadv

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

前情回顾 :
z = w T x + b z= w^Tx+b z=wTx+b y ^ = a = σ ( z ) \widehat{y}=a=\sigma(z) y =a=σ(z) L ( a , y ) = − ( y l o g ( a ) + ( 1 − y ) l o g ( 1 − a ) ) \mathscr{L}(a,y) = -(ylog(a)+(1-y)log(1-a)) L(a,y)=(ylog(a)+(1y)log(1a))
假设现在样本只有两个特征 x 1 x_1 x1 x 2 x_2 x2,则
x 1 w 1 x 2 w 2 b → z = w 1 x 1 + w 2 x 2 + b → y ^ = a = σ ( z ) → L ( a , y ) \begin{matrix}x_1\\w_1\\x_2\\w_2\\b\end{matrix} \rightarrow z=w_1x_1+w_2x_2+b\rightarrow \widehat{y}=a=\sigma(z) \rightarrow \mathscr{L}(a,y) x1w1x2w2bz=w1x1+w2x2+by =a=σ(z)L(a,y) d a = − y a + 1 − y 1 − a da = -\frac{y}{a}+\frac{1-y}{1-a} da=ay+1a1y d z = d L d z = d L d a d a d z = ( − y a + 1 − y 1 − a ) ⋅ a ( 1 − a ) = a − y dz = \frac{{\rm d}\mathscr{L}}{{\rm d}z} =\frac{{\rm d}\mathscr{L}}{{\rm d}a}\frac{{\rm d}a}{{\rm d}z} = (-\frac{y}{a}+\frac{1-y}{1-a})\cdot a(1-a) = a-y dz=dzdL=dadLdzda=(ay+1a1y)a(1a)=ay
d L d w 1 = x 1 ⋅ d z d L d w 2 = x 2 ⋅ d z d L d b = d z \frac{{\rm d}\mathscr{L}}{{\rm d}w_1} = x_1\cdot dz\quad\frac{{\rm d}\mathscr{L}}{{\rm d}w_2} = x_2\cdot dz\quad\frac{{\rm d}\mathscr{L}}{{\rm d}b} = dz dw1dL=x1dzdw2dL=x2dzdbdL=dz
Then
w 1 : = w 1 − α d w 1 w_1 := w_1 - \alpha dw_1 w1:=w1αdw1 w 2 : = w 2 − α d w 2 w_2 := w_2 - \alpha dw_2 w2:=w2αdw2 b : = b − α d b b := b - \alpha db b:=bαdb
以上即实现了单个样本的一次梯度下降更新

2.10 m个样本的梯度下降(Gradient descent on m examples)

同时需要用到逻辑回归和梯度下降算法:

J = 0; dw1 = 0; dw2 = 0; db = 0;
for i = 1 to m
	z(i) = w'*x(i) + b
	a(i) = sigma(z(i))
	J += -(y(i)log(a(i))+(1-y(i))log(1-a(i)))
	dz(i) = a(i) - y(i)
	dw1 += x1(i)*dz(i)
	dw2 += x2(i)*dz(i)	// n = 2
	db += dz(i)
J /= m; dw1 /= m; dw2 /= m; db /= m;
w1 = w1 - alpha*dw1
w2 = w2 - alpha*dw2
b = b - alpha*db

注:

  • 因为dw1,dw2,db是作为累加器使用,所以没有上标,而dz是对于单个训练样本的dz,所以上标 i 是表示第 i 个样本的计算
  • 以上的计算只是梯度下降的一轮计算,如果想要得到结果,需要多次循环
  • 以上过程有个明显的缺点:它需要做两个 for 循环,一个是遍历 m 个训练样本的循环,一个是遍历 n 个样本特征的循环,在上例中,我们只有2个特征,即 n = nx = 2 ,但如果有更多的特征,显式的 for 循环会使算法变得低效,所以引入向量化(vectorization)方法代替显式循环

2.11 向量化(vectorization)

vectorization :
z = w T x + b z = w^Tx+b z=wTx+b
Non-vectorized :

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

Vectorized :

z = np.dot(w,x) + b 	// np.dot(w,x) = w的转置 * x

Tips :

  • GPU(图像处理单元) & CPU 都有SIMD
  • SIMD-single instruction multiple data单指令多数据流,如果使用了向量化的内置函数,将可以利用并行化更快速高效地完成计算

2.12 向量化的更多例子(More vectorization examples)

神经网络编程准则:

  • 尽量避免使用 for 循环

常用numPy库内置函数:

  • np.zeros(size) – 生成全零矩阵
  • np.exp(matrix) – 矩阵中每个元素都取 e 的指数
  • np.log(matrix) – 矩阵中每个元素都取 log 以 e 为底的对数
  • np.abs(matrix) – 矩阵中每个元素都取绝对值
  • np.maximum(matrix,value) – 取矩阵中所有元素与value相比后的最大值
  • matrix ** 2 – 矩阵中每个元素均取平方值
    • 取平方要求矩阵为方阵
  • 1/matrix – 矩阵中每个元素取倒数

用向量化方法来省略一个 for 循环:
在这里插入图片描述

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

z ( i ) = w T x ( i ) + b z^{(i)}= w^Tx^{(i)}+b z(i)=wTx(i)+b a ( i ) = σ ( z ( i ) ) a^{(i)}=\sigma(z^{(i)}) a(i)=σ(z(i))
定义 X 矩阵 shape = ( n x , m ) (n_x,m) (nx,m):
X = [ x ( 1 ) x ( 2 ) x ( 3 ) ⋯ x ( m ) ] X = \begin{bmatrix}x^{(1)}&x^{(2)}&x^{(3)}&\cdots&x^{(m)}\end{bmatrix} X=[x(1)x(2)x(3)x(m)]
Z 矩阵 shape = ( 1 , m ) (1,m) (1,m) w T w^T wT 矩阵 shape = ( 1 , n x ) (1,n_x) (1nx),b 矩阵 shape = ( 1 , m ) (1,m) (1,m),则:
Z = [ z ( 1 ) , z ( 2 ) , ⋯   , z ( m ) ] = w T X + [ b , b , ⋯   , b ] = [ w T x ( 1 ) + b , w T x ( 2 ) + b , ⋯   , w T x ( m ) + b ] Z = [z^{(1)},z^{(2)},\cdots,z^{(m)}] = w^TX + [b,b,\cdots,b] = [w^Tx^{(1)}+b,w^Tx^{(2)}+b,\cdots,w^Tx^{(m)}+b] Z=[z(1),z(2),,z(m)]=wTX+[b,b,,b]=[wTx(1)+b,wTx(2)+b,,wTx(m)+b]
A 矩阵 shape= ( 1 , m ) (1,m) (1,m),则:
A = [ a ( 1 ) , a ( 2 ) , ⋯   , a ( m ) ] = σ ( Z ) A = [a^{(1)},a^{(2)},\cdots,a^{(m)}] = \sigma(Z) A=[a(1),a(2),,a(m)]=σ(Z)
Python numPy中:

Z = np.dot(w.T, X) + b	
A = 1/(1+np.exp(-Z))

Notation :
b是一个实数,但在python中会自动扩展为一个(1,m)的矩阵和前面矩阵相加,称为BroadCasting

2.14 向量化逻辑回归中的梯度计算(Vectorizing Logistic Regression’s Gradient Computation)

d z ( i ) = a ( i ) − y ( i ) dz^{(i)} = a^{(i)} - y^{(i)} dz(i)=a(i)y(i)

定义 dZ 矩阵 shape = ( 1 , m ) (1,m) (1,m),A 矩阵 shape= ( 1 , m ) (1,m) (1,m),Y 矩阵 shape= ( 1 , m ) (1,m) (1,m),则:
d Z = [ d z ( 1 ) , d z ( 2 ) , ⋯   , d z ( m ) ] = A − Y = [ a ( 1 ) − y ( 1 ) , a ( 2 ) − y ( 2 ) , ⋯   , a ( m ) − y ( m ) ] dZ =[dz^{(1)},dz^{(2)},\cdots,dz^{(m)}]= A - Y = [a^{(1)} - y^{(1)},a^{(2)} - y^{(2)},\cdots,a^{(m)} - y^{(m)}] dZ=[dz(1),dz(2),,dz(m)]=AY=[a(1)y(1),a(2)y(2),,a(m)y(m)]
db 矩阵 shape = ( 1 , 1 ) (1,1) (1,1),dw 矩阵 shape = ( n x , 1 ) (n_x,1) (nx,1)
d b = 1 m ∑ i = 1 m d z ( i ) db = \frac{1}{m}\sum_{i=1}^mdz^{(i)} db=m1i=1mdz(i) d w = 1 m X d Z T = 1 m [ x ( 1 ) x ( 2 ) ⋯ x ( m ) ] [ d z ( 1 ) d z ( 2 ) ⋮ x ( m ) ] = 1 m [ x ( 1 ) d z ( 1 ) + ⋯ + x ( m ) d z ( m ) ] dw = \frac{1}{m}XdZ^T = \frac{1}{m}\begin{bmatrix}x^{(1)}&x^{(2)}&\cdots&x^{(m)}\end{bmatrix}\begin{bmatrix}dz^{(1)}\\dz^{(2)}\\\vdots\\x^{(m)}\end{bmatrix} = \frac{1}{m}[x^{(1)}dz^{(1)}+\cdots+x^{(m)}dz^{(m)}] dw=m1XdZT=m1[x(1)x(2)x(m)]dz(1)dz(2)x(m)=m1[x(1)dz(1)++x(m)dz(m)]

Python numPy中:

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

如果想完整实现一次逻辑回归中梯度下降的迭代,则还需要对 w , b 进行赋值更新:

w = w - alpha * dw
b = b - alpha * db

当然,如果要做梯度下降的多次迭代,仍然需要用到 for 循环

2.15 Python中的广播(Broadcasting in Python)

通用准则 :

  • m * n 的矩阵 加减乘除 m * 1 或 1* n 的向量,向量会自动复制为 m * n 的矩阵做运算

2.16 Python numPy向量的说明(A note on python numpy vectors)

Example :

a = np.random.randn(5)
// a.shape = (5,)  means "rank 1 array"
a = np.random.randn(5,1)
// a.shape = (5,1) means "column vector"
a = np.random.randn(1,5)
// a.shape = (1,5) means "row vector"

可以用assert语句检查矩阵的维度:

assert(a.shape == (5,1))

可以用reshape语句更改矩阵的维度:

a = a.reshape((5,1))

2.17 Jupyter notebook的快速指南(Quick tour of Jupyter notebooks)

介绍Coursera课程作业中的基本操作:

  • shift + Enter – 运行
  • Markdown 文本运行后即可出现正常文本格式

2.18 逻辑回归代价函数的解释说明(选修)(Explanation of logistic regression cost function (Optional))

If y = 1 : p ( y ∣ x ) = y ^ p(y|x) = \widehat{y} p(yx)=y
If y = 0 : p ( y ∣ x ) = 1 − y ^ p(y|x) = 1 - \widehat{y} p(yx)=1y

合并以上两种情况后得: p ( y ∣ x ) = y ^ y ⋅ ( 1 − y ^ ) ( 1 − y ) p(y|x) = \widehat{y}^{y}\cdot(1-\widehat{y})^{(1-y)} p(yx)=y y(1y )(1y)

由于log函数严格递增,所以:
l o g p ( y ∣ x ) = l o g ( y ^ y ( 1 − y ^ ) ( 1 − y ) ) = y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) = − L ( y ^ , y ) logp(y|x) = log(\widehat{y}^{y}(1-\widehat{y})^{(1-y)}) = ylog\widehat{y} + (1-y)log(1-\widehat{y}) = -\mathscr{L}(\widehat{y},y) logp(yx)=log(y y(1y )(1y))=ylogy +(1y)log(1y )=L(y ,y)
以上为单个训练样本的损失函数说明

Tips : 损失函数前面有负号是因为当期望输出值为1的概率越大时,损失函数应该越小,即预测的输出与实际输出差距越小

而对于 m 个训练样本的代价函数,如果所有样本的分布服从同一分布且相互独立,则整个训练集中标签的概率为:
p ( l a b e l s   i n   t r a i n i n g   s e t ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ) p(labels\ in\ training\ set) = \prod_{i=1}^mp(y^{(i)}|x^{(i)}) p(labels in training set)=i=1mp(y(i)x(i))
等式两边对对数得:
l o g p ( l a b e l s   i n   t r a i n i n g   s e t ) = ∑ i = 1 m l o g p ( y ( i ) ∣ x ( i ) ) = − ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) logp(labels\ in\ training\ set) = \sum_{i=1}^mlogp(y^{(i)}|x^{(i)}) = -\sum_{i=1}^m\mathscr{L}(\widehat{y}^{(i)},y^{(i)}) logp(labels in training set)=i=1mlogp(y(i)x(i))=i=1mL(y (i),y(i))
我们期望标签在训练集中的概率更大,即损失函数越小,则代价函数越小,所以代价函数定义为:
J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) J(w,b) = \frac{1}{m}\sum_{i=1}^m\mathscr{L}(\widehat{y}^{(i)},y^{(i)}) J(w,b)=m1i=1mL(y (i),y(i))
Tips :

  • 1/m 为常数因子,为给代价函数适当缩放
  • labels in training set的概率在二分分类中可以理解为预测信息为1的概率
  • 求概率最大值时的参数估计用到最大似然估计(maximum likelihood estimate),此处的代价函数需要去掉负号并乘上缩放因子1/m
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值