Machine Learning:机器学习解读(三)

导语

对于这章内容,首先会讲解一下损失函数,然后讲解梯度下降,最后讲解逻辑回归模型。本来是想把自己做的一个逻辑回归模型在这放出来讲的,不过觉得模型还有待改善。总之,吊吊在看的朋友的胃口,可以期待一下。

废话不多说。

上一章知识链接(损失函数)

下表包含的对于各个量的标记符号。

专业术语标记
特征(features)x, x_train
目标(targets)y,y_train
参数(parameters)w(weight),b(bias),w,b
样本容量(parameters)m,m
第i个样本( i t h i_{th} ithTraining Example) x ( i ) x^{(i)} x(i), y ( i ) y^{(i)} y(i), x_i, y_i
第i个样本的预测值(The result of i t h i_{th} ithtraining Example) f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i)),f_wb
预测值(prediction) y − h a t y-hat yhat,y-hat

回想一下,你有一个Linear Regression Model,“ y = w x + b y=wx+b y=wx+b”,你初始化了它两个参数的值,输入特征值得到了一串预测值,通过损失函数与目标值,就得到了你初始的整个模型的损失有多大。

损失函数:

J ( w , b ) = 1 2 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) 2 (1) J(w,b) = \frac{1}{2m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)})^2 \tag{1} J(w,b)=2m1i=0m1(fw,b(x(i))y(i))2(1)

为什么咱们的损失函数定义成这样?

  • 首先,在这一大坨里面,十分好理解的部分是: f w , b ( x ( i ) ) − y ( i ) f_{w,b}(x^{(i)}) - y^{(i)} fw,b(x(i))y(i),就是第i个样本的预测值减去目标值(实际值),也就是损失的量。
  • 为什么要平方呢?在这里,损失量可以说是一个标量,且得是一个正值。如果当预测值比目标值小,那么损失值就变成负数了,这不是我们机器学习体系所能理解的损失,反正,就不对了,因为损失得是一个量,跟正负没关系,所以要剔除正负号的影响。
  • 求和部分很好理解,就是把所有样本的损失值加起来;除以m很好理解,因为咱们损失函数求整个模型的平均损失时,第一来的小,第二来的客观。
  • 除以二的原因也很好理解。假设你初始的模型离理想的模型确实相差甚远,那么也就是说损失函数算出来的值很大。你可以在脑海里浮现 y = x 2 y=x^2 y=x2的图像了。假设我们初始的参数使损失函数在一定程度上远离最低点的点上,我们要使我们到达最低点,也就是要让我们函数点的导数等于0对不对?那我们就需要用到求导了。现在你知道为什么除以2了吗?没错,就说是为了求导时跟平方抵消。

上一章末:我们是用梯度下降的方法降低损失,从而训练出线性回归模型。

梯度下降(Gradient Descent)

梯度下降分为两个步骤:对两个参数求偏导数;梯度减少两个参数的值。对于线性回归模型,直到两个偏导数无限接近0。

求导过程……你应该学会自己求“复合函数”的导数了,知道这里 x ( i ) , y ( i ) x^{(i)},y^{(i)} x(i),y(i)变成常数也就是会求偏导数了。

两个偏导数分别是:

  • 对参数w: ∂ J ∂ w = 1 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) x ( i ) (2) \frac{\partial J}{\partial w}=\frac{1}{m}\sum\limits_{i = 0}^{m-1}(f_{w,b}(x^{(i)}) - y^{(i)})x^{(i)}\tag{2} wJ=m1i=0m1(fw,b(x(i))y(i))x(i)(2)

  • 对参数b: ∂ J ∂ b = 1 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) (3) \frac{\partial J}{\partial b}=\frac{1}{m}\sum\limits_{i = 0}^{m-1}(f_{w,b}(x^{(i)}) - y^{(i)})\tag{3} bJ=m1i=0m1(fw,b(x(i))y(i))(3)

梯度减少两个参数的方法:

  • 对参数w: w = w − α ∂ J ∂ w (4) w=w-\alpha\frac{\partial J}{\partial w}\tag{4} w=wαwJ(4)

  • 对参数b: b = b − α ∂ J ∂ b (5) b=b-\alpha\frac{\partial J}{\partial b}\tag{5} b=bαbJ(5)

α \alpha α是我们设置的learning rate,可以理解为你在函数高处梯度下山的步伐(梯度)的大小,不能太大,否则会使我们可能会错过最低点,却再也回不去(此时你每次更新参数后的损失会时大时小,也就是出现bug了),也不能太小,否则我们到达最低点所需时间会很长。
learning rate

“In machine learning and statistics, the learning rate α \alpha α is a tuning parameter in an optimization algorithm that determines the step size at each iteration while moving toward a minimum of a loss function.”

(参考文献:https://www.educative.io/answers/learning-rate-in-machine-learning)

那么我们要怎么知道合适的learning rate呢?
多试几个吧,合理范围内选最大的,最快(到达极限)的。

逻辑回归模型(Logistic Regression Model)

逻辑回归模型也是有监督的机器学习(Supervised Learning)的一种,它实现的功能就是分类,回归逻辑值,比如0/1,0表示否定,1表示肯定,反之亦可。

逻辑回归模型的learning algorithm:

g ( z ) = 1 1 + e ( − z ) (6) g(z)=\frac{1}{1+e^{(-z)}}\tag{6} g(z)=1+e(z)1(6)

z = w x + b z=wx+b z=wx+b

这个函数就是我们的sogmoid function了。不难看出,当z很大时,函数g接近1,当z很小时,函数g接近0。

sigmoid function

“For binary classification problems, a chosen method makes predictions that match the label scheme. Direct prediction is what we call the output of a method when its co-domain matches label values directly. Perceptrons make direct predictions because they output to either 0 or 1 for any point, which are taken as actual label values.”

(参考文献:https://ai-master.gitbooks.io/logistic-regression/content/sigmoid-function.html)

一般对于返回值为0或1的分类工作就会用sigmoid function。但是,我们看到函数会发现,它有处于0~1之间的部分,我们使大于0.5的判断为1,反之则判断为0,此时它的输出就只有0和1了。

逻辑回归模型的Loss函数

f w , b ( x ( i ) ) = g ( w x ( i ) + b ) f_{w,b}(x^{(i)}) = g(wx^{(i)} + b ) fw,b(x(i))=g(wx(i)+b)

l o s s ( f w , b ( x ( i ) ) , y ( i ) ) = − log ⁡ ( f w , b ( x ( i ) ) ) , if  y ( i ) = 1 loss(f_{\mathbf{w},b}(\mathbf{x}^{(i)}), y^{(i)}) =-\log(f_{\mathbf{w},b}( \mathbf{x}^{(i)})) ,\text{if $y^{(i)}=1$} loss(fw,b(x(i)),y(i))=log(fw,b(x(i))),if y(i)=1

l o s s ( f w , b ( x ( i ) ) , y ( i ) ) = − log ⁡ ( 1 − f w , b ( x ( i ) ) ) , if  y ( i ) = 0 loss(f_{\mathbf{w},b}(\mathbf{x}^{(i)}), y^{(i)}) =-\log(1 - f_{\mathbf{w},b}( \mathbf{x}^{(i)})) ,\text{if $y^{(i)}=0$} loss(fw,b(x(i)),y(i))=log(1fw,b(x(i))),if y(i)=0

合并改进后如下

l o s s ( f w , b ( x ( i ) ) , y ( i ) ) = − y ( i ) log ⁡ ( f w , b ( x ( i ) ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − f w , b ( x ( i ) ) ) loss(f_{\mathbf{w},b}(\mathbf{x}^{(i)}), y^{(i)}) = -y^{(i)} \log\left(f_{\mathbf{w},b}\left( \mathbf{x}^{(i)} \right) \right) - \left( 1 - y^{(i)}\right) \log \left( 1 - f_{\mathbf{w},b}\left( \mathbf{x}^{(i)} \right) \right) loss(fw,b(x(i)),y(i))=y(i)log(fw,b(x(i)))(1y(i))log(1fw,b(x(i)))

loss function
(图片里的 h θ ( x ) h_{\theta}(x) hθ(x)就是 f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i))。)

  • y = 1 y=1 y=1时, f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i))的值越接近0,loss趋于无穷大,因为 y = − l o g ( x ) y=-log(x) y=log(x)在0~1之间是减函数,即 − log ⁡ ( f w , b ( x ( i ) ) ) -\log(f_{\mathbf{w},b}( \mathbf{x}^{(i)})) log(fw,b(x(i)))为减函数。

  • y = 0 y=0 y=0时, f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i))的值越接近1,loss趋于无穷大,因为 y = − l o g ( 1 − x ) y=-log(1-x) y=log(1x)在0~1之间是增函数,即 − log ⁡ ( 1 − f w , b ( x ( i ) ) ) -\log(1-f_{\mathbf{w},b}( \mathbf{x}^{(i)})) log(1fw,b(x(i)))为增函数。

逻辑回归模型的梯度下降

因为仍然更新的是参数w,b的值,从而更新 f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i))的值,所以我们仍然用cost function来做逻辑回归模型的梯度下降:

J ( w , b ) = 1 2 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) 2 (11) J(w,b) = \frac{1}{2m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)})^2 \tag{11} J(w,b)=2m1i=0m1(fw,b(x(i))y(i))2(11)

不同的是, f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i))是sigmoid函数。其余全部照搬前文更新w,b的值,直到loss函数趋于0

总结

懂了就好。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值