机器学习笔记

学习Andrew Ng的机器学习教程,做个笔记。

初识机器学习

人工智能的核心是机器学习,机器学习的本质是算法

机器学习是指,如果一个程序可以在任务T上,随经验E的增加,效果P也随之增加,则这个程序可以从经验中学习。

训练:

  • Step1:设计一个模型(函数集合)
  • Step2:设计一个衡量模型好坏的标准(Cost Function)
  • Step3:找出函数集合中拟合最好的那个函数

测试
测试模型的好坏

机器学习分类

监督学习
使用标记过的训练集,主要用于回归和分类问题。

无监督学习
使用无标记的训练集,解决模式识别中的各种问题,典型的例子是聚类。

半监督学习
半监督学习是监督学习和无监督学习相结合的一种学习方法,使用大量未标记数据和少量标记数据进行模式识别,例如图片识别。

强化学习
强化学习又称再励学习、评价学习,强化学习对机器产生的动作的好坏进行评价,而不告诉机器如何产生正确的动作,通过不断的训练最终产生满意的模型,例如Alpha Go Zero。

迁移学习
迁移学习是指一种学习对另一种学习产生影响,已有的知识会对新的学习产生影响。

深度学习
深度学习用的主要算法是机器学习的人工神经网络(更强大),可以和以上多种学习形式结合使用。


单变量线性回归

模型表示
𝑚:代表训练集中实例的数量
𝑥:代表特征/输入变量
𝑦:代表目标变量/输出变量
(𝑥,𝑦):代表训练集中的实例
(𝑥(𝑖),𝑦(𝑖)):代表第 𝑖 个观察实例
ℎ:代表学习算法的解决方案或函数,也称为假设(hypothesis)

单变量线性回归模型可表示为:ℎ𝜃(𝑥)=𝜃0+𝜃1𝑥,只含有一个特征/输入变量。

代价函数
参数𝜃0,𝜃1该如何选择?
参数的不同决定了模型的准确度,模型预测的值与训练集实际值之间的差距就是建模误差。
目标:找到一组参数,使得建模误差最小。

对于大多数线性回归模型而言,均方误差都可以用来描述建模误差,因此代价函数可表示为:

梯度下降
为了得到代价函数 𝐽(𝜃0,𝜃1) 的最小值,可以使用梯度下降算法来求解。

梯度下降的基本思想:

  • 随机选择一组参数的组合(𝜃0,𝜃1,......,𝜃𝑛)作为初始值,并计算代价函数
  • 寻找下一个能让代价函数下降最多的参数组合
  • 重复上一步骤直至找到一个局部最小值

梯度下降存在的问题:
选择不同的初始值可能会找到不同的局部最小值,无法保证找到的局部最小值就是全局最小值。

如何寻找下一个让代价函数下降最多的参数组合?
  • 对各参数𝜃分别求偏微分(即斜率)
  • 将各偏微分值乘以𝛼得到各维度上的下降步长(𝛼为学习率)
  • 对各维度参数𝜃,同时分别减去各维度下降步长,得到下一个参数组合
  • 循环直至确定参数组合(局部最小值),此时各维度偏微分值等于0

对于学习率𝛼:

  • 如果𝛼太小,则下降步长太小,计算量大
  • 如果𝛼太大,则下降步长太大,可能出现无法收敛的情况

线性回归中的梯度下降
将梯度下降算法运用到线性回归的代价函数上,对𝜃0,𝜃1分别求偏微分,得到


将该微分项代入梯度下降算法中,迭代得到最终的参数𝜃0,𝜃1。

该算法又被称为批量梯度下降算法,原因是每一次计算下降步长时,都会使用这一批所有的训练集数据(求和操作)。


多变量线性回归

多变量/多特征线性回归是对单变量线性回归的一个推广。

假设多变量的模型中特征为 (𝑥1,𝑥2,...,𝑥𝑛),𝑛 代表特征的数量

模型可表示为:

代价函数可表示为:

其中,𝑥(𝑖)是一个向量[𝑥1,𝑥2 ... 𝑥𝑛],表示训练集中的第𝑖个训练实例(其包含𝑛个特征值)。

同样,利用梯度下降算法求解使得代价函数最小的参数组合[𝜃0,𝜃1,𝜃2 ... 𝜃𝑛]

特征缩放
在面对多维特征问题的时候,应该要保证这些特征都具有相近的尺寸,这样可以让梯度下降算法收敛更快。
方法一:𝑥𝑛=(𝑥𝑛−𝜇𝑛)/𝑠𝑛,其中𝑥𝑛是特征值,𝜇𝑛是平均值,𝑠𝑛是标准差。
方法二:min-man标准化:𝑥𝑛=(𝑥𝑛−min)/(max-min)。

学习率
学习率𝛼过小,收敛太慢;学习率𝛼过大,可能无法收敛。
学习率尝试:𝛼=0.01,0.03,0.1,0.3,1,3,10


多项式回归

多项式回归模型可表示为:

如果令:
那么:多项式回归模型可以转化为多特征线性回归模型。
注意:如果采用多项式回归模型的话,在梯度下降算法前,特征缩放很有必要。


正规方程

对于某些线性回归问题,除了梯度下降算法外,正规方程法也许更好。

正规方程法是通过求解下面的方程来找出参数,使得代价函数最小:
假设训练集特征矩阵为𝑋(包含了𝑥0=1),训练集结果为向量 𝑦,求解上述方程,得到模型参数:


逻辑回归

在线性回归模型中,预测的值是连续的。
在二元分类问题中,预测的值是0和1(离散值),此时使用逻辑回归模型。
逻辑回归模型的输出永远在0-1之间(可看成是对应离散值的概率)。
逻辑回归是分类算法。

逻辑回归模型

其中,𝑥 是特征值,𝜃 是权重值,𝑔(𝑧) 是逻辑函数(激活函数)。

对于逻辑回归的代价函数,如果仍然使用均方误差(如线性回归)作为代价函数,由于激活函数sigmoid的存在,代价函数是非凸的,这会导致梯度下降法无法使用(存在多个极值点)。因此考虑使用其它函数作为逻辑回归的代价函数。

对于二元分类,假设模型的结果是样本类别为1的概率,则两种类别的概率分别为:

写成一个式子可表示为:

其含义表示:对于某一组参数𝜃,某一组样本(x,y)的概率结果。

现在的目的是希望:调整参数𝜃,使所有样本的概率乘积最大,利用最大似然函数:

为方便计算,对最大似然函数取对数(log函数单调增,不影响似然函数单调性):

对上式取反并求平均,则逻辑回归的代价函数可定义为(凸函数):

对代价函数求微分,得到梯度下降参数迭代:

线性回归与逻辑回归对比
线性回归:

其中:

逻辑回归:

其中:

线性回归和逻辑回归的参数迭代公式表述一样,但是区别在于模型函数ℎ𝜃(𝑥)


多元分类

逻辑回归一般用于二元分类问题,现将其扩展到多元分类问题上。

分类思想:

  1. 首先选取一种类型作为1,其他类型均看成0,此时可以利用逻辑回归处理这个二元分类问题,得到一个分类器。
  2. 再选取另一种类型作为1,除该类型外的均看成0,利用逻辑回归得到该类型的分类器,循环处理每一种类型。
  3. 对于一个新的输入值,依次运行各类型分类器得到各类型概率,选择最大的那一种类型作为输出。

正则化

处理过拟合问题的方法:

  1. 丢弃一些无用的特征项,可以手工筛选或使用一些模型选择的算法(PCA)帮忙。
  2. 正则化。保留所有特征项,但是减小参数的大小。

正则化线性回归
代价函数表示为:

其中加入了惩罚因子:

该惩罚因子用于惩罚参数𝜃,𝜆 称为正则化参数。(一般不对 𝜃0 进行惩罚)

通过调整𝜆,可以改变参数𝜃的大小。
当𝜆变大时,为使代价函数最小,所有参数𝜃(不包括 𝜃0)会变小,此时可以缓解过拟合现象。

正则化逻辑回归
代价函数表示为:

和正则化线性回归类似,都是加入了惩罚因子用于减小参数𝜃(不包括 𝜃0)。


浅层神经网络

对于线性回归和逻辑回归问题,当特征项太多时,计算量会非常大,此时需要使用神经网络。

模型描述
神经网络是许多逻辑单元按照不同层级组织起来的网络,每一层的输出是下一层的输入。下图是一个简单的两层神经网络模型(Hidden Layer + Output Layer):

其中,上标[l]表示第l层;下标i表示该层中的第i个节点。
输入层是第0层,隐藏层是第1层,输出层是第2层。

神经网络模型的描述如下图:

左边是隐藏层中某一逻辑节点的模型(逻辑回归模型)。
NN的每个逻辑节点都相当于一个逻辑回归(线性回归+激活函数),上层节点的输出作为后一层节点的输入。
每一层每个节点都有各自的权重(weight)和偏差(bias)。

对于某一组训练数据(x(i),y(i)),NN的隐藏层(第一层)完整表述为:

假设训练数据有m组,如果用for循环处理,效率非常低,因此将m组训练数据向量化处理:

其中X是3*m维数组,A是4*m维数组。

激活函数
目前NN使用的激活函数有:sigmoidtanhReLULeaky ReLU。如下所示:

选择激活函数的建议:

  1. 除了二元分类的输出层可以选择sigmoid,除此之外的所有情况都不要选用sigmoid。
  2. tanh在所有场合中都比sigmoid更优越。
  3. 最常用的默认激活函数是ReLU。
  4. Leaky ReLU使用较少。

这几种激活函数的导数为:

  • sigmoid:a = 1/(1+exp(-z)),da/dz = a(1-a)
  • tanh:a = (exp(z)-exp(-z))/(exp(z)+exp(-z)),da/dz = 1-a2
  • ReLU:a = max(0,z),da/dz = 0(z<0) | 1(z>=0)
  • Leaky ReLU:a = max(0.01z,z),da/dz = 0.01(z<0) | 1(z>=0)

梯度下降
以一层隐藏层的NN为例。梯度下降算法可表述为:

其中,w表示权重,b表示偏差,n表示节点数,上标[l]表示第l层。
为简化书写,将 dJ/dw[l] 表示为 dw[l],dJ/db[l] 表示为 db[l]

直观理解反向传播
对于逻辑回归的梯度下降法可表示如下,可利用反向传播过程计算参数的导数

NN的梯度下降表示如下:

对于NN而言,每个神经元上都是一个逻辑回归模型,每一层相当于一个矩阵化的逻辑回归模型,因此一个NN相当于多层逻辑回归的堆叠。

具体推导
前向传播(m组训练集向量化后)描述如下:

各元素维度如下:

利用反向传播计算导数:

  1. 代价函数表示为:J,用于衡量误差。

  2. 求出输出层代价函数关于参数的偏微分:
  1. 根据前向传播公式,可以得到:
  1. 将上式表示为第l层形式,于是可得到第l层代价函数关于参数的偏微分:

注:公式中*在Python中也为*,表示矩阵对应位置元素相乘;其它均为线性代数的矩阵乘法,Python中用numpy.dot()计算。

  1. 由上面的公式可知,第 l 层的相关导数依赖于第 l+1 层的导数,因此可依次求出第L,L-1,L-2 ...... 层的相关导数,直至计算到输入层。

  2. 计算出各层相关参数的导数后,就可根据梯度下降法训练出最终神经网络模型了。

有篇文章写得很好:
https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/
https://github.com/mattm/simple-neural-network

参数随机初始化
对于NN,权重W的初始化必须使用随机数,不能使用全零数组;偏差b可以初始化为全零数组。
如果激活函数是sigmoid / tanh,初始值应尽可能小(接近0),此时斜率更大,梯度下降快。


深层神经网络

深层神经网络是对浅层神经网络的扩展,在浅层神经网络的基础上增加了隐藏层。

模型描述
深层神经网络的模型(前向传播)可描述为:

左边是单个训练数据的模型描述,W[l]和dW[l]维度是(n[l],n[l-1]),b[l]和db[l]维度是(n[l],1),z[l]和a[l]维度是(n[l],1)。
右边是对m个训练数据向量化处理后模型描述,W[l]、dW[l]、b[l]、db[l]的维度不变,Z[l]和A[l]维度是(n[l],m)。

深度神经网络块的搭建

对于某一层神经网络,工作流程如下:

具体可表述为:

  1. 对于第l层,参数为W[l],b[l]
  2. 前向传播:输入a[l-1],计算并缓存z[l],计算输出a[l]
  3. 反向传播:输入da[l]和缓存的z[l],计算输出da[l-1]、dW[l]、db[l]

左边是单一数据集的前向传播描述,右边是m个数据集向量化的前向传播描述。

左边是单一数据集的反向传播描述,右边是m个数据集向量化的反向传播描述。

整体的流程如下:

超参数
在计算神经网络时,除了模型中使用的参数W,b之外,还会有许多其他参数(例如:学习率、隐藏层数、逻辑节点数等),而这些参数会影响W,b的取值,称这些参数为超参数。

对这些超参数的调试是重要且需要经验的。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容