机器学习简介

机器学习101

在这篇博文中,我们将从以下几个方面简要地向大家介绍一下机器学习。

  • 什么是机器学习?
  • 训练机器学习模型
  • 优化参数
  • 神经网络

如果你不是这方面的专家,也不需要担心,因为在这篇博文中谈及的内容仅需要高中的数学知识就足够了。

什么是机器学习?

牛津词典将机器学习定义为:“The capacity of a computer to learn from experience”(计算机从经验中学习的能力)。

机器学习的目标是做出可以让计算机从一些示例数据中学会如何完成特定任务的算法。

举个例子。假设我们想编写一个程序用来玩围棋。我们可以通过人工定义如何玩游戏的规则来完成这个程序。我们可以编制一些开放策略和决策规则——例如,吃掉一颗棋子比不吃掉强。

但是有一个问题是,手动编制这些规则意味着他们可能很快就会变得很复杂,并且也会受到程序员能够想到的策略的限制。一个更好的解决方案是构建机器学习算法。机器学习可以像人类一样通过案例和经验来学习如何去玩围棋。这就是DeepMind利用AlphaGo所做的事情,利用基于深度学习的算法成功打败了人类围棋世界冠军。

训练机器学习模型

机器学习算法通过使用标记好的数据来训练模型。机器学习算法通常会定义拥有可调参数和优化算法的模型,如下图所示。该模型获取输入数据(x并以这个输入数据和它的参数为基础来得到输出 (y。优化算法试图找到参数的最佳组合,以便在给定输入示例x的情况下,模型的输出y尽可能接近预期输出。训练的模型被表示为给定输入x就能得到输出y的函数f,即y=f(x)


训练机器学习模型的流程

优化

有许多方法可以供找到最佳的参数组合,使模型f的输出y在给定输入x的情况下尽可能接近预期输出。一种方法是尝试所有可能的参数组合,并选择能够产生最佳结果的组合。如果只有有限数量的参数组合,这样也许能找到需要的组合,但是对于具有数千乃至数百万参数的典型机器学习模型而言,获取所有的参数组合完全是不切实际的。幸运的是(感谢17世纪数学家牛顿的发明),我们有一种更好的方法来找到某些类型的模型的最佳解决方案。


牛顿和莱布尼茨——https://xkcd.com/626/

牛顿的发明是导数(也通常被称为梯度)。函数的导数表示该函数相对于它某个参数的变化,并且它指向函数增加的方向。假设我们有一个具有参数p的函数f,那么函数f的变化df相对于参数p的变化dp被记作df(p)/dp


对于不同的p值,f(p) = p⋅sin(p^2)的导数(梯度)df(p)/dp 

那么导数又是如何提高模型的优化效率的呢?假设我们有一些数据(x, t),其中x对应于目标t。这些数据被绘制如下:


标记的数据 (x,t)

如果我们现在想创建一个对于所有的样例都有一个输入x能够满足目标t的模型,那么我们可以尝试从原点出发拟合直线(这也被称为线性回归)。这条直线可以用函数y=f(x)表示,其中f(x)=p⋅x p是模型的唯一参数(注意p表示直线的斜率)。该模型可以直观地表示为:

                                                                           

                                                                                我们的模型y=f(x)的表示

为了找到参数p使得y=x⋅p对于所有给定的例子(x,t)都接近于t,我们必须以数学的方式来定义度量标准“接近度”。这个度量标准被称为成本函数。这个问题的典型成本函数是在所有样例(x,t)上对目标t和模型输出y的差的绝对值的平方:|t-y|²求和。最终成本函数变为∑|t - (x⋅p)|² ,其中代表求和。因为这个例子十分简单,我们可以很容易地绘制出对于所有参数p的成本函数:

                                                    

                                                                                    我们例子的成本函数

要找到最佳参数p,我们需要最小化成本函数值。请记住我们的模型有一个参数p,获取输入x并产生输出y。我们可以把模型写成y=x⋅p。因为成本是 ∑|t-y|² ,我们可以替换掉y,并将成本函数写为∑|t - (x⋅p)|²。如果我们想最小化这个函数并使输出y尽可能地接近目标t,我们可以为每个输入样本(x,t)尝试p的所有可能值,并利用在所有输入样本上的最小成本函数值来选取p的值。在这种情况下(只有一个参数p的情况尝试所有可能的p值是可行的,但当模型的参数变多时,这很快也就变得不可行。这就是导数发挥作用的地方。通过使用导数,我们可以简单地为p随机选择初始参数值,并开始沿着导数相反的方向去找到成本函数上的最低点。这个随着导数(梯度)下降的过程也被称为梯度下降。下面将说明该过程,我们从p=0.3开始随着梯度变换进行了12步,同时改善模型与数据的拟合(如右图所示的直线)。当成本连续降低很小时,我们停止拟合,所以最后的参数p1.94,成本为0.451。请注意,最后的直线比初始直线更适应数据(x,t)

           

                                                                                        梯度下降优化

神经网络

实际上,上文提到的是我们训练神经网络时才会发生的事情。然后,典型的神经网络模型一般是由比我们的y=x⋅p模型复杂得多的函数组成。神经网络模型多种多样,但通常它们都是可微的,并且可以使用梯度下降进行优化,正如我们在这篇博客中所说的那样。

例如,计算机视觉中使用的典型神经网络一般由多个层组成。每层是个具有成百上千参数的非线性函数。神经网络中具有多个层也就是“深度学习”一词的来源。在模型中使用多层网络的好处是每个层次都可以使用从上一层中提取的信息来构建更复杂的数据表示。正因为如此,神经网络才能如此强大,它已经被成功地应用于识别视频中的猫语音识别玩雅达利(Atari)游戏

如果你想尝试构建小型神经网络,请试试Google的Tensorflow Playground,或者如果您有更多技术方面的想法并且想了解更多信息,可以参考我的教程来实现您自己的神经网络模型

本文翻译原文链接:https://medium.com/onfido-tech/machine-learning-101-be2e0a86c96a。如有翻译不准确的地方,还请各位朋友能够指正。另外,很抱歉,翻译别人的文章图片还用了水印,一时没找到从哪里去图片水印了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值