古语常云:“大道至简”,万事万物纷繁复杂,最终却归至几个最简单的道理。我常常在想,如今很火的AI领域是否也是如此。将AI真正学懂学会的过程就像一场遥不可及的漫长攀登,起始于晦涩难懂的数学领域(高数/线代/概率论),踉跄于公式满篇的机器学习,还要翻越神经网络、编程与数据科学库等重重大山,最终抵达应用的那个分岔路口,也从不是彼岸,只是新的开始。

这个系列文章【NLP机器学习基础】,从最基础的机器学习算法入手,着重算法的理解推导和应用实践,是机器学习在自然语言处理中应用不可或缺的技术,当然,它也适用于通用的机器学习问题。

作者&编辑 | Miss思

1 概述

“现在的时代是深度学习的时代。”

我时常听到有人这么说,一度也是这么认为,将各种STOA模型的理解和复现似乎才是重中之重,至于机器学习,都是统计学习时代的老古董了,干嘛那么认真去学呢?

这种想法让我在研究生入学第一阶段的基础学习过程中一度变得轻慢而浮躁,尤其是发现机器学习算法的实践只需要那小小几行代码的时候,是啊,调个库,调个包,谁不会呢?谁会那么傻,还一页页去啃西瓜书,去推《统计学习方法》?那些数学公式也太麻烦了吧~

可是我忽略了太多冰山下面的东西,就像学习武术伊始,没有学好扎马步。

机器学习一直以来是一门非常关键的学科,他的重要地位从未因为他所蕴含的数学内容而受到任何撼动,反而由于其严密的逻辑性和可解释性成为机器学习算法强大的背后力量。

机器学习的优越之处其一在于他扎根数据的分析。从实实在在的数据样本分布出发,从千百年前数学家提出的统计概率理论出发,每个公式的证明和每个公式的推导都有着清晰明了的理论依据。从最大似然估计到最小二乘法的最优参数选择,从中心极限定理到高斯分布,虽然是基于假设去做推论,但每一步都走的扎实。

机器学习的优越之处其二在于他对于数据样本的宽容性。众所周知,深度学习时代的神经网络模型是极度依赖于大量数据样本的,这也催生了如今的数据标注行业的火爆,也有了那句极具讽刺意义的“有人工才有智能”。不论是CV行业图片的标注,还是NLP行业文本的数据标注,是这些非常基础却又一直重复的底层工作,成就了上层监督学习模型璀璨的光芒。而传统机器学习对于数据的依赖相对较轻,他并不需要巨大无比的数据量,而只是需要使用一部分数据进行算法尝试即可获得不错的效果。

在数据量少时先进行尝试,再决定是否投入大批人力物力财力进行数据标注,这是一种很常见的思路。如今火爆的预训练模型+利用小批量数据微调其实也是这样的思路,只是机器学习比他早了很多年。

我从不提倡单纯去学习某一层面而批判另一个层面,相反,最佳的结合莫过于两者联手。在拥有充足数据资源的情况下使用深度学习网络进行特征提取,再结合机器学习思想或算法进一步处理,往往是更完美的做法,事实上,人们确实也这么做了。我曾读过组里师兄的一篇优秀论文,其核心就是从目前棘手的问题入手,思考如何利用机器学习算法和深度学习模型进行解决,他巧妙地对数学公式进行变换,以一种相当强大的逻辑自洽完成了对一种经典NLP应用的算法优化,获得了国际会议的一致好评。

你看,强强联手就是这么酷。

2 回归基础

首先我们要明白一件事,机器学习究竟要做什么?

我们都学过数学,对函数也并不陌生,记得高考最头痛的数学题也和函数有关,但我们所接触的往往是已经给出的一个函数,参数固定,而x未知,对吗?

机器学习要做的这件事却和我们的认知相悖,他是基于过去的已知数据样本,根据某种算法来利用机器学出参数来,并以此来预测未来的重要事件。

如今是疫情时期,我们就拿现在大家都关心的疫情预测来举例吧,我曾在微博上看到清华AI团队预测疫情将会在2.16日左右出现拐点,这个预测时间是如何确定的,我猜测很大可能也是机器学习算法,根据过往疫情爆发的数据选用合适的模型学习出准确率较高的参数,进而对未来可能发生的事件进行预测。

从这个例子中,我们发现了机器学习的三要素,模型、策略、算法,这也是李航老师在《统计学习方法》中所提出的核心概念。模型定义了解空间,在监督学习算法中,他就是包含了所有可能的条件概率分布或决策函数;我们将学习过程看作一个在解空间中进行搜索的过程,那么策略就是考虑用什么样的准则学习以优化目标,从而使其预测值更加接近于训练集的真实值;而算法就是指学习模型的具体方法,如著名的梯度下降法。

我们首先来看模型,模型的确定往往与数据样本密切相关。

比如,什么是分类,什么是回归,就可以从数据样本长什么样来确定,y是连续的,OK,你是回归,y是离散的,你就是分类,就是这么简单粗暴。你也可以从图形角度来看,回归往往是造出一条连续的曲线与数据样本的真实值进行拟合,而分类则是在离散的样本里切上几刀,像分蛋糕一样。

那么,科学家们是如何将数据转化为可以推理和预测的数据公式呢?这里蕴藏着一些概率与数理统计的知识。首先,我们会假设所有样本都是独立同分布的,那么其误差即服从均值为0,方差为某定值的高斯分布。Why? 因为中心极限定理。

中心极限定理假设有无穷多样本进行分布,且x1,x2....xn互相独立,则样本们服从同一分布,且具有相同的期望和方差,并一定会收敛到标准正态分布。在实际问题中,很多随机现象可以看作众多因素的独立分布影响的综合反应,近似正态分布的应用前提往往是大量样本确实存在。

以上内容,是理解下面三种回归算法的前提。

3  回归算法

在详细讲解回归算法之前,我们首先来了解一下这些算法有哪些应用。

线性回归处理的是数值问题,也就是最后预测出的结果是数字。比如根据大批量房产数据及价格做房价预测,又比如利用过去股市的数据选取模型做股价拟合和股价预测。而逻辑回归属于分类算法,也就是说,逻辑回归预测结果是离散的分类。比如推断这封邮件是否是垃圾邮件,以及用户是否会点击此广告等等。

回归算法是后面若干强大算法的基石,他分为两个重要的子类:线性回归与逻辑斯特回归。将这两个算法理解透彻,将能够更容易理解接下来的机器学习算法。下面,我们首先来看线性回归。

3.1  线性回归

给定由d个属性描述的数据样本x = (x1;x2;...;xd),其中xi是x在第i个属性上的取值,线性模型试图学得一个通过属性的线性组合来进行预测的函数,即f(x) = w1x1+w2x2+...+wnxn,一般用向量形式会写成 f(x) = w的转秩*x+b,其中样本固定,而w作为参数也是一个n维的向量,当w和b确定后,线性模型也就得以确定。

而我们要做的线性回归,就是在面对预测值连续,且拥有多个属性一定数据样本的情况下,学出参数向量w和b,从而确定出一个函数来,这个函数就是我们通常所说的模型,他在预测这种情况下的未来值时,同样具有较高的准确率。

那么,我们从机器学习的三要素考虑,模型层面,由上一节内容我们可以知道由中心极限定理,样本服从高斯分布,那么策略层面,我们选用什么准则以优化学习目标,算法层面,我们又使用什么具体方法利用机器进行参数学习呢?

从严谨的数据分布角度来说,有兴趣的伙伴可以跟着我推一推。由于数据服从正态分布,即所有样本都是独立同分布的,那么就可以用似然函数进行推理(具体过程如下图所示),可以看到,在x(i),参数确定下表示出y(i)的概率,再进行最大似然估计,使用对数函数将连乘优化为加和后,最终结果若要取最大,则在其他式子数值固定的前提下,包含theta参数的那个式子就要取最小,将他提取出来后得到的J(theta)即是传说中的最小二乘估计,这也是线性回归的目标函数(损失函数)。这个值越小,损失函数越小,模型所预测的结果与真实值相比差距就越小,模型就越好。这也揭示了最小二乘法的本质:高斯分布+最大似然估计——>最小二乘。

当然,我也阅读了《西瓜书》,书中并未对此进行如此细致的推导,直接告知读者使用基于均方误差最小化来进行模型求解的“最小二乘法”来进行模型优化,并直接给出推导出的公式结论也是非常容易理解的,不过我想,经过推导的话,可能理解会更深刻吧~

OK,当推导出损失函数之后,我们策略方面就得到了完美的解答,接下来就是算法层面了。怎样优化损失函数,让损失函数值最小?

我们可以引入线性代数,将样本与参数全部用向量表示,使用线性代数的已知推论进行驻点的求取,将X的每一行对应一个样本,共M个样本,将X的每一列对应样本的一个维度,共N维,则求取梯度就变成了纯粹的线性代数运算,过程如下图所示。这样求出的theta就是最小二乘意义下的参数最优解。

为了防止过拟合,theta往往还会加上lambda扰动,即线性回归的复杂度惩罚因子,希望他的参数不要过多,其参数和不要过大,因而就有了我们都知道的L1正则(LASSO)(拥有特征选择能力),L2正则(Ridge回归),以及L3正则(Elastic Net,将L1和L2正则进行加权结合)。

然而,使用线性代数进行算法计算依旧是人力层面的推导计算,不符合利用计算机进行“机器学习"的初衷。科学家因而研究出了”梯度下降算法”,使参数theta沿着负梯度方向迭代,更新后的theta使损失函数越来越小。

了解完线性回归后,我们再来看Logistic回归。

3.2  Logistic回归

Logistic回归则与线性回归在一开始的应用出发点就有所不同,虽然二者看似都是回归,但一个用于回归,一个用于分类。我们可以将Logistic回归看作是加了sigmoid函数的线性回归,他的形状很像S形,所以才会以Sigmoid命名。

Sigmoid函数在之后的深度学习中也会被频繁用到,因为他的作用将数值结果转化为了0到1之间的概率,接着我们依据这个概率进行预测,比如概率大于0.5,则这封邮件就是垃圾邮件,或者肿瘤是否是恶性等等。

他的表现形式如下图所示,由于服从二项分布,因此独特的表达方式让他的参数估计和求导都变得与众不同。

但让人感到诧异的是,他参数的学习规则与线性回归的学习规则是完全一致的,都如下图所示:

二者的差异只是在于模型所服从的分布不同,也可以认为是函数表达式的不同。逻辑斯特回归服从二项分布,由最大似然估计推导出最终的损失函数,而线性回归则服从正态分布。因此,我们可以认为是对数几率函数Sigmoid函数的出现,将线性回归的数值转化为0~1之间的概率,从而用于分类作用。在Logistic函数的表达式中,中z = theta的转秩*x,而y = 1/1+e^z,这个公式则完全体现了数值转化的过程。

综上,我们对线性回归和Logistic回归算法进行了详细的讲解。我们分别从算法的作用、算法的数学形式、算法损失函数的推导及计算参数的策略进行了探索,并对两者算法的异同点进行了对比分析。

希望学到这里的你能够心得满满,并且有所收获:)

下期我将会从实际应用入手,为大家讲解回归在机器学习及NLP中有哪些实践应用。

总结

回归算法是后面若干强大算法的基石,将回归算法理解透彻,将能够更容易理解接下来的机器学习算法。

读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"

下期预告:回归算法在实践中的应用

知识星球推荐

_

_

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。

知识星球主要有以下内容:

(1) 聊天机器人;

(2) 知识图谱;

(3) NLP预训练模型。

转载文章请后台联系

侵权必究

往期精选

_

  • 【完结】 12篇文章带你完全进入NLP领域,掌握核心技术

  • 【年终总结】2019年有三AI NLP做了什么,明年要做什么?

  • 【NLP-词向量】词向量的由来及本质

  • 【NLP-词向量】从模型结构到损失函数详解word2vec

  • 【NLP-NER】什么是命名实体识别?

  • 【NLP-NER】命名实体识别中最常用的两种深度学习模型

  • 【NLP-NER】如何使用BERT来做命名实体识别

  • 【NLP-ChatBot】我们熟悉的聊天机器人都有哪几类?

  • 【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述

  • 【NLP-ChatBot】能干活的聊天机器人-对话系统概述

  • 【知识图谱】人工智能技术最重要基础设施之一,知识图谱你该学习的东西

  • 【知识图谱】知识表示:知识图谱如何表示结构化的知识?

  • 【知识图谱】如何构建知识体系:知识图谱搭建的第一步

  • 【知识图谱】获取到知识后,如何进行存储和便捷的检索?

  • 【知识图谱】知识推理,知识图谱里最“人工智能”的一段

  • 【NLP实战】tensorflow词向量训练实战

  • 【NLP实战系列】朴素贝叶斯文本分类实战

  • 【NLP实战系列】Tensorflow命名实体识别实战

  • 【NLP实战】如何基于Tensorflow搭建一个聊天机器人

  • 【NLP实战】基于ALBERT的文本相似度计算

  • 【每周NLP论文推荐】从预训练模型掌握NLP的基本发展脉络

  • 【每周NLP论文推荐】 NLP中命名实体识别从机器学习到深度学习的代表性研究

  • 【每周NLP论文推荐】 介绍语义匹配中的经典文章

  • 【每周NLP论文推荐】 对话管理中的标志性论文介绍

  • 【每周NLP论文推荐】 开发聊天机器人必读的重要论文

  • 【每周NLP论文推荐】 掌握实体关系抽取必读的文章

  • 【每周NLP论文推荐】 生成式聊天机器人论文介绍

  • 【每周NLP论文推荐】 知识图谱重要论文介绍

【NLP机器学习基础】从线性回归和Logistic回归开始相关推荐

  1. 机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)...

    本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有 ...

  2. 线性回归、logistic回归、一般线性模型回归

    以下是转载JerryLead博主的,链接为http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html 对线性回归,logistic ...

  3. 线性回归、logistic回归

    本文是由一份以回归为主题的演讲的幻灯片修改而成,内容包括线性回归.logistic回归.梯度下降.最小二乘法的概念描述和例子讲解,并附有相关的代码. 该幻灯片文件是由LaTeX编译生成的PDF格式文档 ...

  4. 机器学习笔记1:基于Logistic回归进行数据预测

    机器学习笔记1:基于Logistic回归进行数据预测 一.背景 近期项目的一个核心部分就是实现对数据的预测,因为没有实际的数据样本,所以我准备近期学习Machine Learning的几种方式,从简单 ...

  5. 线性回归及logistic回归详解

    机器学习 线性回归 logistic回归 (主要参考 吴恩达机器学习) 线性回归 线性回归是机器学习中比较基本的一个算法.其基本思想大致可以理解为给定一个数据集,通过线性回归得到一条曲线,尽可能地去拟 ...

  6. 机器学习:多分类的logistic回归

    机器学习:多分类的logistic回归 Multi-Class Logistic(多分类的Logistic问题) 它适用于那些类别数大于2的分类问题,并且在分类结果中,样本x不是一定只属于某一个类可以 ...

  7. 线性回归、logistic回归、广义线性模型——斯坦福CS229机器学习个人总结(一)

    纪念我第一个博客的碎碎念 先前我花了四五个月的业余时间学习了Ng的机器学习公开课,学习的过程中我就在想,如果我能把这个课程啃完,就开始写一些博客,把自己的所得记录下来,现在是实现的时候了.也如刘未鹏的 ...

  8. 用python做逻辑回归梯度上升_机器学习实例---4.1、Logistic回归基础篇之梯度上升算法...

    一 前言 本文从Logistic回归的原理开始讲起,补充了书上省略的数学推导.本文可能会略显枯燥,理论居多,Sklearn实战内容会放在下一篇文章.自己慢慢推导完公式,还是蛮开心的一件事. 二 Log ...

  9. 机器学习实战(五)——Logistic 回归

    文章目录 Logistic 回归 5.2 基于最优化方法的最佳回归系数确定 5.2.1 梯度上升法 5.3 python实战 5.3.1 查看数据集分布情况 5.3.2 训练 5.3.3 绘制决策边界 ...

最新文章

  1. 文件内容批量修改工具
  2. uva10405-最长公共子序列
  3. python并发编程4-线程
  4. python 数据格式转换_python常用数据格式转换
  5. Transfer-Encoding: chunked
  6. 每日英语:How to say No to other people
  7. 近世代数-群论基础一
  8. 论基于架构的软件设计方法及应用
  9. dtu MySQL_DTU-DATACENTER
  10. qt打开xls文件_Qt读取excel文件的两种方法
  11. 【行业专题报告】酒类(白酒、啤酒)-专题资料
  12. java 如何读取解析 mac 下的 pages 文稿,实现数据库正向工程
  13. 超级详细Window10安装Java JDK 和配置开发环境
  14. oracle 自增数,ORACLE自增函数,一般函数
  15. python与机械教育初探_python与机器学实践-何宇健 源代码及过程中遇到的问题
  16. android 矢量图形文件,Android Studio进行APP设计开发之矢量图及XML文件转换
  17. c++入门全套视频教程
  18. GPS北斗共视授时中的多径效应分析
  19. 华为mate 30系列安装Google全家桶
  20. 特斯拉上海超级工厂初具规模 地基已经打好

热门文章

  1. c++调用python的代码、函数、类
  2. springmvc教程--整合mybatis开发(spring+springMVC+mybatis整合开发)
  3. AudioManager播放音乐
  4. spring boot配置文件:application.yml (yml与properties文件优缺对比)
  5. 算法--中兴面试:输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数, 使其和等于 m
  6. canvas并查集画随机迷宫
  7. Java实现简单的队和栈
  8. Java中的volatile关键字
  9. Xcode 新项目删除 storyboard 文件
  10. 网工的常规操作:配置动态NAT