《Machine Learning - 李宏毅》视频笔记(完结)
https://www.youtube.com/watch?v=CXgbekl66jc&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49
https://www.bilibili.com/video/av65521101
因为之前有些基础,对于本视频课程的学习仅仅记录一些要点.目前只学习涉及深度学习和对抗攻击的部分.
1 Regression
通过Gradient Descent找到Loss Function的局部最优点.Gradient就是Loss Function对每个参数的偏导数排成的向量.
如果Loss Function是Convex的,即凸函数,那么Gradient Descent一定可以找到全局最优点.
过于复杂的model就会Overfitting.
类别型特征可以通过δ函数变成Linear Model.
对于特征的处理,可以通过Domain Knowledge或者Regularization.
Regularization的一种简单方式是在Loss Function中加入λΣ(wi)2,因为越小的w越平滑,即对变化越不敏感.
Regularization一般不考虑bias,因为它只影响Loss Function的上下移动,而与是否平滑无关.
可以给w和b设定不同的Learning Rate来加强拟合效果.
2 Where does the error come from?
Error = Bias + Variance
Bias即偏差,反映模型的输出与真实值之间的误差.模型复杂度越低,Bias越高.
Bias高导致的Error即Underfitting,一般需要优化模型.
Variance即方差,反映模型的输出结果与输出期望之间的误差,即模型稳定性.模型复杂度越高,Variance越高.
Variance高导致的Error即Overfitting,一般可以增加更多训练数据或者Regularization.
Cross Validation就是将Training Set分为Training Set和Validation Set.
K-fold Cross Validation就是把Training Set分成K份,每次用其中一份做Validation Set,共做K次,取平均值作为某个模型的最终Error.
3 Gradient Descent
Learning Rate太小会导致参数下降太慢,太大会导致可能无法到达最优点.一般会将Learning Rate设为随迭代次数越来越小.
AdaGrad:
给予每个参数一个独立的Learning Rate.每次更新wnew = wold - η/σ*g, 其中η是时间函数, σ是w的过去所有偏导数的均方根Root Mean Square(包含本次).
AdaGrad可以直观地理解为突出Gradient的反差,例如一个之前数值较大的Gradient突然变小,AdaGrad会使这个小的数字更小.
Gradient Descent的原理可以理解为:函数图像上某个点到该函数最小值的距离正比于它的一次微分,反比于它的二次微分.AdaGrad就是利用了这个原理,用之前微分值的RMS近似二次微分值.
Stochastic Gradient Descent每次只考虑一个example的loss funciton,对它进行Gradient Descent.
Feature Scaling即将不同Features的数值缩放到同一尺度.这样每次迭代都有更大可能性最优点的方向移动.
用泰勒级数的思想来看Graident Descent,当learning rate足够小时才能保证迭代都会使Loss变小.
Graident Descent会在微分值接近0的地方停止,但这个点可能只是一个局部最优值或是一个鞍点.
4 Classification
Generative Model对x和y的分布进行建模,因此可以生成数据.
使用Maximum Likelihood极大似然估计去拟合出一个高斯分布的μ和Σ,就可以对数据集中不存在的分类进行预测.
最常见的Loss Function是Cross Entropy.
5 Logistic Regression
Sigmoid Function:σ(z) = 1 / (1 + exp(-z), z=wx+b.
Logistic Regression即找出使得L(w,b)最大的w和b,其中L是Training Data的数据分布,方法同样是Gradient Descent.
这种方法称为Discriminative Model,不直接去对分布进行建模.它的表现常常比Generative Model更好.但在Training Data很少的情况下Generative Models更好.
Multi-class Classification的一种基本方法是Softmax函数,它计算每个类别的ez(z=wx+b), 并且将这个值除以Σez作为输出概率y.
Logistic Regression在二分类问题上就是一条直线,因此无法划分某些情况,此时可以做Feature Transformation,或者将多个Logistics Regression级联起来,也就是深度学习,此时的一个单元也称为Perceptron或者Neuron.
6 Brief Introduction of Deep Learning
Neuron Network可以分为Input Layer, Hidden Layer, Output Layer,其中Hidden Layer就做了Feature Transformation的工作,Output Layer一般需要加一个Softmax.
每层Layer之间的每个Neuron都两两连接的网络叫做Fully Connect Network.
每层Layer的运算可以看作是σ(Wx+b)的矩阵运算,因此可以使用GPU加速.
Deep Learning需要做的主要工作就是设计网络的结构,如Layer的数量和Neuron的数量.
7 Backpropagation
Backpropagation通过Chain Rule链式法则将偏导数分为Forward Pass和Backward Pass两部分.Forward Pass就等于对于该Neuron的Input.Backward Pass通过从最后的Output Layer向前计算得到,即反向传播.
8 “Hello World” of Deep Learning
一般使用库时,只需设置每层的Neuron数量和层数即可.
训练时会将Training Data分为多个Batch,其中的数据随机挑选,直到将所有Batch训练完为止.这个流程叫做一个Epoch.Batch_size和Epoch次数也是重要的参数.
Mini-Batch GD避免了SGD所需训练时间过长的缺点(因为使用了并行运算),又避免Large Batch Size训练效果差的缺点.
9 Tips for Training DNN
DL不同于SVM等凸优化机器学习方法,它在Training Data上的结果就可能不好,因此需要特别关注.
Vanishing Gradient梯度消失是指Network 很深的时候,越深的Neuron的梯度越大,因此学习越快,而此时靠近Input Layer的Neuron还远远没有拟合,就导致后面的Neuron的拟合是基于前面的Neuron的接近于随机值的Input去拟合,因此准确率很低.这是因为Sigmoid Function的变化传递是会衰减的.
DL的常见步骤:
构建模型
若在Training Data上的表现不好,修改激活函数或者Learning Rate迭代方法.
若在Testing Data上的表现不好,解决过拟合.
激活函数:
ReLU可用于解决Vanishing Gradient,因为它的输出值是0或线形的,前者不会对输出造成影响,后者不会衰减.
Leaky ReLU将左端改为a=0.01z.
Maxout Network可以自己学习激活函数,它每层的激活函数是对事先分组的一个Max Function.假如该组中存在一个w=0、b=0的Neuron,那么该组的激活函数就相当于ReLU.
Learning Rate迭代方法:
AdaGrad:wnew = wold - η/σ*g
RMSProp:AdaGrad的改进版,wnew = wold - η/σ*g, 其中η是时间函数, σ=√(α(σ)2+(1-α)g2).
Momentum:给Gradient加上惯性的启发式方法.每次移动的方向都是本次的负Gradien方向与前一次移动的Gradient方向的加权和.
Adam:RMSProp + Momentum.
解决过拟合:
Early Stopping:理想的模型迭代情况应该是Training Loss一直变小, Testing Loss先变小后变大.因此利用Validation Set来模拟Testing Set,当Testing Loss重新变大后就停止训练.
Regularization:在Loss Function中加入Regularization term.因为目的是使模型平滑,所以一般只考虑w而不考虑b.L2 Regularization会使Gradient中新增一项,每次迭代都使得w=(1-ηλ),所以所有w都会是一个较小值.L1 Regularization会使w较稀疏,但其中会有较大值.
Dropout:每次在更新参数前对Neuron做一个Sampling,每个Neuron有p%的概率被Dropout.Testing的时候不做Dropout,并且将所有权重乘上(1-p)%.Dropout会导致Training Data上的表现变差,但能解决过拟合问题.Dropout在线形激活函数上的表现很好.解决过拟合
10 Convolutional Neural Network
NN用于图像识别的原因是每个Hidden Layer都可以从图像特征的维度来提取特征.
为什么CNN可以拿掉某些参数:
图像中的Pattern特征一般比整张Image要小.
同样的Pattern可能出现在Image的不同部分.
整张图像变小理论上不会影响物体的识别.
CNN的结构一般是Convolution+Max Pooling+Flatten+FNN.
Convolution卷积:
有一组Filter,每个Filter是一组Matrix,它的高等于Image的Channel颜色通道数.Filter中每个值都是学习得到的参数.
Filter的尺寸小于Image,每个FIlter从Image的左上角开始做内积,从右往左、从上往下挪动Stride,得到一组新的Matrix.
将所有Filter得到的Matrix叠在一起,称为Feature Map.深度取决于Filter的数量.所有Feature Map会一起被传入下一层Convolution,此时深度就相当于是Input Image的Channel.
Shared Weights:Convolution可以看作减少了参数数量,因为新的Matrix中的每个Neuron只由前一层中的部分值计算得到,并且这个Matrix中的所有Neuron是共用一个FIlter的.
Max Pooling池化:将Filter得到的Matrix做一个分组,每组只保留其中的最大值(或平均值等).
Flatten+FNN:将最后的Feature Map拉直后传入一个FNN即可.
分析CNN学习到了什么:把某层Filter Convolution后的结果做Σ,用Graident Ascent求得使这个Σ值最大的Input X,得到的结果就是该Filter学习到的特征.同理也可以用于FNN的Neuron或Output.
Deep Dream或Deep Style就使用了上述思路,让CNN夸大它看到的结果.
11 Why Deep?
在总Neuron数相同的情况下,较深的网络的效果远优于较浅的网络.
Deep Learning可以看作一个Modularization模块化的过程,每个Neuron的学习结果可以被后面的网络复用.而且Deep Learning其实并不需要很大的数据量.
Deep Learning在Universality Theorem上的表现更有效率.类别逻辑电路,2层就可以表示所有Bool Function,但多层所需的逻辑元更少.
Deep Learning可以取代传统方式中人工提取的Feature.
12 Semi-supervised Learning
半监督学习是指在一组Labeled Data外,还有一组Unlabeled Data,且后者数量一般远大于前者.
一般分为Transductive Learning和Inductive Learning,前者将Testing Data作为Unlabeled Data,后者不考虑Testing Data.
半监督学习会基于一些假设,此时Unlabeled Data的分布可能会给学习带来帮助.
19 Transfer Learning
如果没有与目标任务直接相关的Data,就可以用Transfer Learning迁移学习.
Transfer Learning的Data可以根据有无Label、是否为Target Data分为四类.
Target Data和Source Data都有Label:
只关心Target Data的预测,称为Fine-tuning.先用Source Data训练出一个Model,作为下一阶段的初始值,再用Target Data来Fine-tune它.具体技巧有Conservative Training、Layer Transfer等.
同时关心两种Data等预测,就称为Multitask Learning,例如多语言辨认就会共用前面的某几层.
Target Data是Unlabeled,Source Data是Labeled:
两类数据比较接近,例如有背景的数字和无背景的数字.不同目标所抽取的特征不一定相同,因此需要Domain-adversarial Training,在Feature Extractor后面加入一个Domain Classifier和一个Label Predictor.
Zero-shot Learning:Target data的数据在Source data中没有出现过.具体方法是建立一个Database,每个Class用互不相同的Attribute表示.在训练时针对Attribute进行学习.如果通过降维将Image和Atrribute变成同样的维度,就可以通过相似度进行匹配.这个Database还可以使用Word Vector.
21 Recurrent Neural Network
Slot Filling是指匹配出一段自然语言中的关键词属于哪个Slot.首先需要将词汇表示成Vector,例如Word Vector, 1-of-N encoding等等.
同一个词在不同语境中会属于不同的Slot,因此需要神经网络具有记忆性.
Elman Network:Hidden Layer的Output会被存储在Memory中,当下一次计算该Hidden Layer的值时就需要考虑这些Memory.
Jordan Network:存储的是output的值.
Bidirectional RNN:同时Train一个正向的RNN和一个逆向的RNN,把它们的Hidden Layer接给同一个Output Layer.
LSTM:
外界的值通过Input Gate才能传入Memory.Memory的输出通过Output Gate才能传入Neuron.Memory还有一个Forget Gate,决定是否要将之前记录的内容Forget掉.
Gate的开关状态由学习得到,通常选择Sigmoid作为Gate的激活函数.
c‘=g(z)f(zi)+cf(zf),α=h(c‘)f(zo),其中c是Memory的当前值,c‘是更新以后的值,g(z)是输入值,f(zi)是Input Gate的值,f(zf)是Forget Gate的值,h(c‘)是输出的激活函数,f(zo)是Output Gate的值.
LSTM一个cell的结构相当于普通神经网络的一个Neuron.是RNN的一个比较通用的模型.
RNN使用的优化算法是Backpropagation through time(BPTT).它的Training比较困难,会有类似“悬崖”的情况,因为从Memory到Neuron的那部分权重会被反复使用:
可以使用一个叫Clipping的技巧控制Gradient不超过某个常数值.
LSTM可以解决Gradient Vanishing的问题.因为它的Neuron对Memory的影响是一直存在的,除非Forget Gate全部关闭.
《Machine Learning - 李宏毅》视频笔记(完结)的更多相关文章
- <Machine Learning - 李宏毅> 学习笔记
<Machine Learning - 李宏毅> 学习笔记 b站视频地址:李宏毅2019国语 第一章 机器学习介绍 Hand crafted rules Machine learning ...
- 《Machine Learning》系列学习笔记之第一周
<Machine Learning>系列学习笔记 第一周 第一部分 Introduction The definition of machine learning (1)older, in ...
- Coursera课程《Machine Learning》学习笔记(week1)
这是Coursera上比较火的一门机器学习课程,主讲教师为Andrew Ng.在自己看神经网络的过程中也的确发现自己有基础不牢.一些基本概念没搞清楚的问题,因此想借这门课程来个查漏补缺.目前的计划是先 ...
- 《Attack ML Models - 李宏毅》视频笔记(完结)
Attack ML Models - 李宏毅 https://www.bilibili.com/video/av47022853 Training的Loss:固定x,修改θ,使y0接近ytrue. N ...
- Andrew Ng Machine Learning Coursera学习笔记
课程记录笔记如下: 1.目前ML的应用 包括:数据挖掘database mining.邮件过滤email anti-spam.机器人autonomous robotics.计算生物学computati ...
- 《Machine Learning》系列学习笔记之第二周
第二周 第一部分 Multivariate Linear Regression Multiple Features Note: [7:25 - θT is a 1 by (n+1) matrix an ...
- 【DL.AI】《Structuring Machine Learning Projects》笔记
一.改进模型的几个方法 Collect more data Collect more diverse training set Train algorithm longer with gradient ...
- 《Machine Learning》系列学习笔记之第四周
第四周 Model Representation I 让我们来看看如何使用神经网络来表示假设函数.在非常简单的水平上,神经元基本上是将输入(树突)作为输入到输出(轴突)的电输入(称为"尖峰& ...
- 《Machine Learning》系列学习笔记之第三周
第三周 第一部分 Classification and Representation Classification 为了尝试分类,一种方法是使用线性回归,并将大于0.5的所有预测映射为1,所有小于0. ...
随机推荐
- Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)
简介 通过上一篇宏哥给各位小伙伴们的引荐,大家移动对这位美女有了深刻的认识,而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里,是不是这样呢???不要害羞直接告诉宏哥:是,就对了.宏哥要的就是这个 ...
- 【BZOJ5104】Fib数列(BSGS,二次剩余)
[BZOJ5104]Fib数列(BSGS,二次剩余) 题面 BZOJ 题解 首先求出斐波那契数列的通项: 令\(A=\frac{1+\sqrt 5}{2},B=\frac{1-\sqrt 5}{2}\ ...
- 用友U9 查看功能页面实体
对着当前页面右键查看属性: 在链接后面加上&__dm=true 在打开的页面将鼠标放到字段上,可以看到页面实体是那一个.
- ImageUtility辅助类
public class ImageUtility { #region 合并用户QR图片和用户头像 /// <summary> /// 合并用户QR图片和用户头像 /// </sum ...
- wcf序列化嵌套类(如TreeNode)异常原因
循环引用类在WCF中的传递 循环引用类在WCF中的传递问题,例如: [DataContract] public class AB { public string name { ...
- English--倒装句
English|倒装句 这一块主要进行英语中倒装句与强调句的透析,希望大家可以掌握倒装句.因为倒装句,实在是太常见了,加油哦~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...
- Ivanti的垃圾软件landesk
landesk是Ivanti公司推出的终端管理工具,这个工具垃圾就垃圾在无法卸载,进程杀不死.文件删不掉,奉劝大家千万不要安装这个软件.前些天公司的IT部门一直在催促员工安装这个软件,我一时糊涂安装了 ...
- jQuery每秒刷新
显示当前时间 setInterval( function getNowTime() { var nowTime = new Date(); var nowYear = nowTime.getFullY ...
- three 3D实例学习
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 大规模定制模式之于MES的三点思考
大规模定制(Mass Custermization) ,其目标是大规模生产定制化产品,并且在效率.质量(一致性)等指标方面与大规模批量生产等齐. 这是一种理想或者追求,其提出的背景是目前越发普遍的多品 ...