机器学习实战 - 读书笔记(05) - Logistic回归

机器学习实战 - 读书笔记(05) - Logistic回归

解释

Logistic回归用于寻找最优化算法。

  • 最优化算法可以解决最XX问题,比如如何在最短时间内从A点到达B点?如何投入最少工作量却获得最大的效益?如何设计发动机使得油耗最少而功率最大? 我们可以看到最XX问题,有寻找最小(最短时间)和最大等。
    • 解决最小类问题会使用梯度下降法。可以想象为在一个山坡上寻找最陡的下坡路径。
    • 同理,解决最大类问题会使用梯度上升法。可以想象为在一个山坡上寻找最陡的上坡路径。
  • 寻找最优化算法,可以通过试图找到一个阶跃函数(step function),由于阶跃函数只返回0或者1.因此这个阶跃函数可以作为分类器。
  • 一个方案是利用Sigmoid函数做出一个阶跃函数。

\sigma(z) = \frac{1}{1 + e^{-z}} 在人工神经网络中,Sigmoid函数是一种常见的激活函数(activation function)。 通过Sigmoid函数的曲线可以看出,其返回值在0到1之间,大部分值都贴近0或者1.只有z在0附近时,形成一个上升曲线,z=0是,返回值是0.5. 因此当Sigmoid函数返回值大于0.5,这个阶跃函数返回1,否则返回0.

  • 这时,问题变成如何算z。

z = w_0x_0 + w_1x_1 + ... + w_nx_n 如果采用向量的写法,上述公式可以写成 $ z = w^Tx$ 它表示将这两个数值向量的对应元素相乘然后全部加起来即得到z值。其中的向量x是分类器的输入数据,向量w也就是我们要找到的最佳参数(系数),从而使得分类尽可能地精确. 这是一个线性函数。(为什么一定是线性函数?线性方程可以想象为一条直线(2维情况下),或者一个平面(3维情况下),第一:线性函数是递增或者递减的,复合sigmoid函数的要求,第二:比较好解。) 或者说这是一个多元一次方程,我们要根据训练数据算出最佳的w_0, ... w_n.

技巧1: 加入不变量。 比如在一元一次方程中z=w_0x_0,由于没有常数项,就限制求出最佳解。因此可以变成z=w_0x_0 + w_1x_1,其中x_0 = 1。这就是为什么书中的代码中加入1.0列的原因。

  • 如果求解w? 如果是求最大类问题,我们使用梯度上升算法的迭代公式。

w:= w + \alpha \nabla wf(w) 其中,\alpha为步长。步长太大会导致震荡,找到的w不精确。步长太小会影响运算效率。步长可以在迭代的过程中改变。

技巧2: 步长是一个重要的计算参数。正确的计算一个步长很关键。书中使用了动态步长,在计算中步长逐渐缩短。 从微积分的角度来说,这个公式就是在现在的w上加上激活函数的导数乘以步长。

  • 梯度上升法

所以梯度上升算法的迭代公式为: w:= w + \alpha \nabla wf(w) 书中的计算: weights = weights + alpha * (label - sigmoid(sum(dataMatrix[index] * weights)) * dataMatrix[index] 书中实际的计算公式为: $w:= w + \alpha (c - f(x)) x $ 其中: w是向量。 \alpha是步长。 c是期望值, x的实际分类,值为0或1。 f(x)是sigmoid函数。可以是算总和,或者是向量。 (c - f(x))有两个作用:一个是提供偏移方向,是增加还是减少。另外一个作用是偏移量的一个因子。如果f(x)是一个阶跃函数,则值为-1,0,1,这种情况下只有第一个作用。对于sigmoid函数,其值的范围[-1, 1]。 x是向量。书中似乎认为x越大,偏移量应该越大。 这个似乎有问题。一个问题是如果所有的x都很大,而且集中在一个区域里,则偏移量似乎过大。 第二,下面的例子: 测试数据1: [ [[0, 1], [0]], [[0, 2], [0]], [[0, 4], [1]], [[0, 5], [1]]] 测试数据2: [ [[10000, 1], [0]], [[10000, 2], [0]], [[10000, 4], [1]], [[10000, 5], [1]]] 这两个测试数据测分割线都是: 0 = -3 + x_2,和x_1无关。 这个情况下,书中的计算公式明显不正确。 这也说明这个迭代公式需要根据实际情况调整。

技巧3: 需要大量的迭代才能算出最优的w。书中对测试数据进行了150迭代。

其它说明

  • 梯度上升算法的迭代公式

梯度上升算法用来求函数的最大值。 w:= w + \alpha \nabla wf(w) 其中,\(\alpha\)为步长。步长太大会导致震荡,找到的w不精确。步长太小会影响运算效率。书中的步长是数据size的1/10。步长可以在迭代的过程中改变。

  • 梯度下降算法的迭代公式

梯度下降算法用来求函数的最小值。 w:= w - \alpha \nabla wf(w)

  • Sigmoid函数的导数

f'(x) = f(x) [1-f(x)]

  • 梯度上升法,计算梯度

如果梯度记为\nabla,则函数f(x,y)的梯度由下式表示: \nabla f(x, y) = \binom{\frac{\nabla f(x, y)}{\nabla x}} {{\frac{\nabla f(x, y)}{\nabla y}}} 这个梯度意味着要沿x的方向移动 \frac{\nabla f(x, y)}{\nabla x},要沿y的方向移动 \frac{\nabla f(x, y)}{\nabla y}

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

深度学习的三大生成模型:VAE、GAN、GAN

本章将为读者介绍基于深度学习的生成模型。这种模型的形式主要是根据原始图像推测图像具备的一些性质,例如根据数字图像推测数字的名称,根据自然场景图像推测物体的边界;...

48680
来自专栏IT派

深度学习的三大生成模型:VAE、GAN、GAN

导语:本章将为读者介绍基于深度学习的生成模型。前面几章主要介绍了机器学习中的判别式模型,这种模型的形式主要是根据原始图像推测图像具备的一些性质,例如根据数字图像...

1.4K90
来自专栏专知

【干货】这8种神经网络结构,你掌握了几个?

【导读】近日,James Le撰写了一篇博文,全面阐述了神经网络中经典的八种神经网络结构。包括感知器、卷积神经网络、循环神经网络、LSTM、Hopfield网络...

34490
来自专栏人工智能LeadAI

TensorFlow从0到1 | 第九章“驱魔”之反向传播大法

上一篇8 万能函数的形态:人工神经网络解封了人工神经网络,如果用非常简短的语言来概括它,我更喜欢维基百科的诠释: 人工神经网络是一种模仿生物神经网络(动物的中...

29880
来自专栏算法channel

算法channel 2017回顾

1 算法channel 公众号才成立两个月,在这段日子,每天推送一篇算法,机器学习,深度学习相关的文章,包括: 算法的基本思想 算法的实例分析 有些算法的源代码...

37260
来自专栏企鹅号快讯

Attribute-Enhanced F R with Neural Tensor Fusion Networks 阅读笔记

因为标题长度有限,所以把Face Recognition简写成F R,论文题目应为《Attribute-Enhanced Face Recognition wi...

33370
来自专栏决胜机器学习

机器学习(二) ——线性回归、代价函数与梯度下降基础

机器学习(二) ——线性回归、代价函数与梯度下降基础 (原创内容,转载请注明来源,谢谢) 一、线性回归 线性回归是监督学习中的重要算法,其主要目的在于用一个...

47460
来自专栏YoungGy

MMD_3a_CommunitiesInSN

The first four videos are part of the basic track, and cover machine-learning te...

25590
来自专栏刘笑江的专栏

无约束最优化问题求解

22330
来自专栏人工智能头条

终于有个能看懂的CS231n经典CNN课程了:AlexNet/VGG/GoogLeNet(上)

今天由条子给大家推送。其实条子对人工智能不是很了解,但是禅师说:你去看看斯坦福的 CS231n 教程就了解了。

32720

扫码关注云+社区

领取腾讯云代金券