反向传播
Q-Learning
实验
1.手写卷积神经网络(卷积、池化、正向、反向传播)
2.LeNet5手写数字识别(LeNet5网络结构)
3.A*算法(启发式搜索)
4.cifar10 with pytorch
5.用RL训练一个Agent来打游戏(强化学习)
DQN loss function:
DQN能成功的一方面是采用了DNN网络进行Q值得函数拟合,end-to-end的模型训练,更重要的是引入了下面几个点:
3.error被clip到[-1,1]区间,增加模型的稳定性
题目
分类问题、回归问题、图像标题生成等都是有监督学习
自动编码器学习到的新特征可以送入有监督学习模型中,所以自动编码器可以起到特征提取器的效果。
自动编码器可以用于数据的降维处理
自动编码器常用于做生成模型 F 自动编码器一般不用于生成,除非是变分自动编码器
**变分自动编码器:**通常假设潜在变量服从某种先验分布(高斯分布)。在自动编码机的基础上加入了随即因子,这样就可以从模型中采样到新的数据。模型训练完之后,可以在这种先验分布中采样得到潜在变量,并在解码器中通过潜在变量得到新的样本;在生成数据阶段只需要解码器
判别式模型:决策树、支持向量机、K近邻
特征矩阵的归一化是按照特征矩阵的行,也就是每个样本进行处理
BP神经网络是:多层前向(前馈)神经网络
给定一个长度为N的不完整单词序列,我们希望预测下一个字母是什么,则使用:循环神经网络【循环神经网络对序列数据最有效】
假设我们有一个5层的神经网络,这个神经网络在使用一个4GB显存显卡时需要花费3个小时来完成训练。而在测试过程中,单个数据需要花费2秒的时间。 如果我们现在把架构变换一下,当评分是0.2和0.3时,分别在第2层和第4层添加Dropout,那么新架构的测试所用时间会变为多少?任然为2秒,只会增加训练时间,不会增加测试时间
考虑某个具体问题时,你可能只有少量的数据来解决这个问题,不过幸运的是,你已经有一个类似问题已经训练好的神经网络。可以用下面哪种方法来利用这个训练好的网络?只对最后几层调参(fine tune)
GRU的出现可以帮助RNN解决梯度消失问题 对
对于一个分类任务,如果开始时神经网络的权重不是随机赋值的,而是全部设置为0,则:神经网络可以开始训练,但是最后神经元最后都会变成识别同样的东西【如果权重初始化为同一个值,网络即是对称的,最终所有神经元都会变成识别同样的东西
假设我们已经在ImageNet数据集(物体识别)上训练好了一个卷积神经网络。然后给这张卷积神经网络输入一张全白的图片。对于这个输入的输出结果为任何种类的物体的可能性都是一样的,对吗?错
假设在训练中我们突然遇到一个问题,在几次循环之后,误差瞬间降低。你认为数据有问题,于是画出了数据并且发现也许是数据的偏度过大造成了这个问题:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WcjpenLB-1580957978723)(C:\Users\11370\AppData\Roaming\Typora\typora-user-images\image-20200103092654400.png)]
你打算怎么做来解决这个问题:对数据作主成分分析(PCA)和归一化【即首先将相关的数据去掉然后置零。具体来说,误差瞬间降低,一般原因是多个数据样本有强相关性并突然被拟合命中,或者含有较大方差数据样本突然被拟合命中。】
一般,K-NN在:样本较少但典型性好的情况下效果较好
模型的高bias是什么意思:模型太简单,如何降低它:在特征空间中增加特征
下图是一个利用sigmoid函数作为激活函数的含四个隐藏层的神经网络训练的梯度下降图。这个神经网络遇到了梯度消失的问题。下面哪个叙述是正确的?
第一隐藏层对应D,第四隐藏层对应A,以此类推
什么是ill-condition(病态问题):训练完的模型稍作修改就会得到差别很大的结果,模型对未知数据的预测能力很差,即泛化误差大
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FxQs9jg6-1580957978724)(C:\Users\11370\AppData\Roaming\Typora\typora-user-images\image-20200103093915220.png)]
CNN训练经验:
激励函数使用ReLU(之前的使用tanh和sigmoid有饱和性,当输入的x过大或过小时,输出会非常接近+1和-1,这里斜率会很小,形成梯度消失,幂运算相对耗时),若ReLU失效,使用Leaky ReLU【ReLU缺点:输出不是zero-center,神经元坏死现象(某些神经元可能永远不会被激活,导致参数永远不会被更新】
池化:提取特征、减少特征图尺寸,对加速计算很有作用。【特征不变性、降低计算、一定程度上防止过拟合】
调参经验:
参数初始化:uniform均匀分布初始化
数据预处理:zero-center
训练技巧:clip梯度、梯度归一化;dropout;不要使用sigmoid,使用relu+bn;选择好的优化器:adam/sgd;降低学习率;不同的参数,通过cross-validation选择效果最好的一组
CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?
不同问题的相关性在于:他们都存在局部和整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。CNN抓住此共性的手段主要有四个:局部共享、权值共享、池化操作、多层次结构。且卷积操作可以结合上下文信息
什么样的资料不适合做深度学习:
1.数据集太小,样本不足时,深度学习相对于其它机器学习算法没有明显优势;2.数据集没有局部相关性
激活函数需要具备的属性:
非线性、几乎处处可微、计算简单、非饱和性
人工智能元年:1956年
尽管人工智能学术界出现“百家争鸣”的局面,但是当前人工智能的主流派仍属于:符号主义
启发式搜索是一种利用启发式信息的搜索,估价函数在搜索过程中起到的作用是:估计节点位于解路径上的希望
训练模型时,如果样本类别不均衡,有什么办法解决:过采样:增加类别少的样本数量;欠采样:对训练集中样本比较多的类别进行去除操作
如何判断模型是否过拟合:对模型进行交叉验证,以观察结果是否波动较大;训练集loss低于验证集很多
对于神经网络模型有哪些常用的方法解决过拟合问题:1、正则化项 2、DropOut 3、Batch normalization
神经网络中激活函数的作用:过滤掉弱信息,使信息量达到一定数量时才能影响结果
sigmoid: 1 1 + e − x \frac{1}{1+e^{-x}} 1+e−x1【缺点:并不是以0为中心的,收敛慢、在非敏感区域造成梯度消失 优点:近似概率估计,可以增强0附近的梯度,放大信号,梯度计算方便】
ReLU: m a x ( 0 , x ) max(0,x) max(0,x)【缺点:比较脆弱,容易受大梯度影响,输出不关于原点对称 优点:梯度不饱和,正向传播速率快】
A)均方误差: 1 2 ∑ ( a j L − y ) 2 \frac{1}{2}\sum{(a_{jL}-y)^2} 21∑(ajL−y)2
【反向传播公式推导:https://blog.csdn.net/u014313009/article/details/51039334】
人工智能的历史与趋势
当前AI模式的问题:
深度学习的解法:大数据小任务范式
优点:容易实现、见效快:70%-80%;如果数据够多,可以有足够的效果
缺点:特例不停;特定任务,不能泛化;不可解释;很多领域没有大量数据;周期长盈利困难;落地难
AL智能体:任务学习与泛化、叫停、报告思想、解释行为
Machine learning basics
图像分类问题:计算机视觉领域的核心问题之一,物体检测和分割也可以归结为图像分类问题。
1、输入:输入包含N各图像的集合,每个图像的标签是K种分类标签种的一种。这个集合称为训练集
2、学习:训练一个分类器或者学习一个模型来学习每个类长什么样
3、评价:让分类器来预测它未曾见过的图像的分类标签,并以此来评价分类器的质量。我们会把分类器预测的标签和图像真正的分类标签对比。毫无疑问,分类器预测的分类标签和图像真正的分类标签如果一致,那就是好事,这样的情况越多越好。
将两张图片转化为两个向量 I 1 , I 2 I_1,I_2 I1,I2,然后计算它们的L1距离(逐个像素比较,最后将差异值全部加起来)
d 1 ( I 1 , I 2 ) = ∑ P ∣ I 1 P − I 2 P ∣ d_1(I_1,I_2)=\sum_P{|I_1^P-I_2^P|} d1(I1,I2)=P∑∣I1P−I2P∣
L 2 L_2 L2距离:
d 2 ( I 1 , I 2 ) = ∑ P ( I 1 P − I 2 P ) 2 d_2(I_1,I_2) = \sqrt{\sum_P(I_1^P-I_2^P)^2} d2(I1,I2)=P∑(I1P−I2P)2
在面对两个向量之间的差异时,L2比L1更不能容忍这些差异。也就是说,相对于1个巨大的差异,L2距离更倾向于接受多个中等程度的差异。L1和L2都是在p-norm常用的特殊形式。
5-NN分类器将这些不规则都平滑了,使得它针对测试数据的泛化能力更好(例子中未展示)。注意,5-NN中也存在一些灰色区域,这些区域是因为近邻标签的最高票数相同导致的(比如:2个邻居是红色,2个邻居是蓝色,还有1个是绿色)。
如何选定K的大小:用于超参数调优的验证集
如果你使用测试集来调优,而且算法看起来效果不错,那么真正的危险在于:算法实际部署后,性能可能会远低于预期。这种情况,称之为算法对测试集过拟合。从另一个角度来说,如果使用测试集来调优,实际上就是把测试集当做训练集,由测试集训练出来的算法再跑测试集,自然性能看起来会很好。这其实是过于乐观了,实际部署起来效果就会差很多。所以,最终测试的时候再使用测试集,可以很好地近似度量你所设计的分类器的泛化性能
解决过拟合方法1.减少特征数量 2.正则化
交叉验证。有时候,训练集数量较小(因此验证集的数量更小),人们会使用一种被称为交叉验证的方法,这种方法更加复杂些。还是用刚才的例子,如果是交叉验证集,我们就不是取1000个图像,而是将训练集平均分成5份,其中4份用来训练,1份用来验证。然后我们循环着取其中4份来训练,其中1份来验证,最后取所有5次验证结果的平均值作为算法验证结果。
实际应用。在实际情况下,人们不是很喜欢用交叉验证,主要是因为它会耗费较多的计算资源。一般直接把训练集按照50%-90%的比例分成训练集和验证集。但这也是根据具体情况来定的:如果超参数数量多,你可能就想用更大的验证集,而验证集的数量不够,那么最好还是用交叉验证吧。至于分成几份比较好,一般都是分成3、5和10份
易于理解,实现简单;训练不需要花时间
测试需要花大量时间。在实际应用种我们关注测试效率远远高于训练效率
L1,L2范数来进行像素比较是不够的,图像更多是按照背景和和颜色被分类而不是语义主体本身
将图像看做高维度的点:既然图像被伸展成为了一个高维度的列向量,那么我们可以把图像看做这个高维度空间中的一个点(即每张图像是3072维空间中的一个点)。整个数据集就是一个点的集合,每个点都带有1个分类标签。
将线性分类器看做模板匹配:关于权重W的另一个解释是它的每一行对应着一个分类的模板(有时候也叫作原型)。一张图像对应不同分类的得分,是通过使用内积(也叫点积)来比较图像和模板,然后找到和哪个模板最相似。从这个角度来看,线性分类器就是在利用学习到的模板,针对图像做模板匹配。从另一个角度来看,可以认为还是在高效地使用k-NN,不同的是我们没有使用所有的训练集的图像来比较,而是每个类别只用了一张图片(这张图片是我们学习到的,而不是训练集中的某一张),而且我们会使用(负)内积来计算向量间的距离,而不是使用L1或者L2距离
图像数据预处理:在上面的例子中,所有图像都是使用的原始像素值(从0到255)。在机器学习中,对于输入的特征做归一化(normalization)处理是常见的套路。而在图像分类的例子中,图像上的每个像素可以看做一个特征。在实践中,对每个特征减去平均值来中心化数据是非常重要的。在这些图片的例子中,该步骤意味着根据训练集中所有的图像计算出一个平均图像值,然后每个图像都减去这个平均值,这样图像的像素值就大约分布在[-127, 127]之间了。下一个常见步骤是,让所有数值分布的区间变为[-1, 1]。零均值的中心化是很重要的
1.多类支持向量机损失 Multiclass Support Vector Machine Loss,叫作折页损失,有时又叫最大边界损失
L i = ∑ j ! = y i m a x ( 0 , s j − s y i + δ ) L_i=\sum_{j!=y_i}max(0,s_j-s_{y_i}+\delta) Li=j!=yi∑max(0,sj−syi+δ)
其中 s j = f ( x i , W ) j s_j=f(x_i,W)_j sj=f(xi,W)j
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TfJ2V7LL-1580957978732)(C:\Users\11370\AppData\Roaming\Typora\typora-user-images\image-20200103154533685.png)]
正则化(Regularization):上面损失函数有一个问题。假设有一个数据集和一个权重集W能够正确地分类每个数据(即所有的边界都满足,对于所有的i都有L=0,问题在于这个W并不唯一:可能有很多相似的W都能正确地分类所有的数据。一个简单的例子:如果W能够正确分类所有数据,即对于每个数据,损失值都是0。那么W任意正整数倍均可
换句话说,我们希望能向某些特定的权重W添加一些偏好,对其他权重则不添加,以此来消除模糊性。这一点是能够实现的,方法是向损失函数增加一个正则化惩罚(regularization penalty部分。最常用的正则化惩罚是L2范式,L2范式通过对所有参数进行逐元素的平方惩罚来抑制大数值的权重:
R ( W ) = ∑ k ∑ l W k , l 2 R(W)=\sum_k\sum_lW^2_{k,l} R(W)=k∑l∑Wk,l2
即W中所有元素平方后求和,正则化函数不基于数据,只针对权重。
加入了正则化损失之后,损失函数变为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AY6ElJ4G-1580957978733)(C:\Users\11370\AppData\Roaming\Typora\typora-user-images\image-20191228143936172.png)]
交叉熵损失:
L i = − l o g ( e f y i ∑ j e f j ) = − f y i + l o g ( ∑ j e f j ) L_i=-log(\frac{e^{f_{y_i}}}{\sum_je^{f_j}})=-f_{y_i}+log(\sum_je^{f_j}) Li=−log(∑jefjefyi)=−fyi+log(j∑efj)
在实际使用中,SVM和Softmax经常是相似的:通常说来,两种分类器的表现差别很小,不同的人对于哪个分类器更好有不同的看法。相对于Softmax分类器,SVM更加“局部目标化(local objective)”,这既可以看做是一个特性,也可以看做是一个劣势。考虑一个评分是[10, -2, 3]的数据,其中第一个分类是正确的。那么一个SVM会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是0。SVM对于数字个体的细节是不关心的:如果分数是[10, -100, -100]或者[10, 9, 9],对于SVM来说没设么不同,只要满足超过边界值等于1,那么损失值就等于0。
对于softmax分类器,情况则不同。对于[10, 9, 9]来说,计算出的损失值就远远高于[10, -100, -100]的。换句话来说,softmax分类器对于分数是永远不会满意的:正确分类总能得到更高的可能性,错误分类总能得到更低的可能性,损失值总是能够更小。但是,SVM只要边界值被满足了就满意了,不会超过限制去细微地操作具体分数。这可以被看做是SVM的一种特性。举例说来,一个汽车的分类器应该把他的大量精力放在如何分辨小轿车和大卡车上,而不应该纠结于如何与青蛙进行区分,因为区分青蛙得到的评分已经足够低了。
Multi-Layer Neural Network
面临的问题:
1.ill-condition(病态问题,通常与训练数据、网络结构以及网络的初始化权重有关。常见的问题是输入训练数据过大、网络层结构大小不一、初始权重过大或过小)
2.local minima(局部极小值)
3.plateaus,saddle points and other flat regions(梯度消失问题)
4.cliffs and exploding gradients(梯度爆炸)
5.Lont-Term Dependencies(长期依赖,先验知识利用不足)
1.随机搜索 2.随机本地搜索
#普通版本梯度更新
while True:
weights_grad = evaluate_gradient(loss_fun, data, weights)
weights += - step_size * weights_grad # 进行梯度更新
小批量数据梯度下降(Mini-batch-grdient-descent)
# 普通的小批量数据梯度下降
while True:
data_batch = sample_training_data(data, 256) # 256个数据
weights_grad = evaluate_gradient(loss_fun, data_batch, weights)
weights += - step_size * weights_grad # 参数更新
随机梯度下降(Stochastic Gradient Descent 简称SGD)
全连接网络缺点大量连接消耗计算资源、没有考虑到空间结构、受到网络层数的限制
CNN
**优点:**1.local connectivity(局部连通性,稀疏的) 2.parameter sharing(参数共享) 3.equivariant representations(等变性质,即输入改变时,输出也会跟着改变)
VGGNet:使用小卷积核(3x3),原因:三个3x3的堆叠卷积层的感受野和7x7卷积核相同,且多个3X3卷积层组合比一个大尺寸的卷积层具有更多的非线性,同时有更少的参数。
ResNet:解决随着网络的深度增加,越来越难优化的问题。解决思路: 使用网络层来fit resident mapping,而不是直接尝试适应所需的底层映射 [事实上,已有的神经网络很难拟合潜在的恒等映射函数H(x) = x。但如果把网络设计为H(x) = F(x) + x,即直接把恒等映射作为网络的一部分。就可以把问题转化为学习一个残差函数F(x) = H(x) - x.]
只要F(x)=0,就构成了一个恒等映射H(x) = x。 而且,拟合残差至少比拟合恒等映射容易得多。]
RNN
应用领域:
语音识别、机器翻译、音乐生成、文本生成、情感分析、DNA序列分析、视频行为识别、实体名字识别
卷积神经网络需要固定长度的输入和输出,循环神经网络可以是不定长的输入。
one to one:卷积神经网络
one to many:输入一张图片,输出一句描述图片的话
many to one:输入一句话,判断是正面情绪还是负面情绪
many to many: 1)有延时的:机器翻译 2)无延时的:判断每帧分类
计算公式:
h t = f W ( h t − 1 , x t ) h_t = f_W(h_{t-1},x_t) ht=fW(ht−1,xt)
h t h_t ht:new_state h t − 1 h_{t-1} ht−1:old_state x t x_t xt:input vector at some time step f W f_W fW:some function with parameters W
注意:对于任意时刻,无论序列有多长,我们使用的都是同一个函数,W都是一样的
最简单的RNN:【在RNN中每一步都共享参数】
所有RNN都具有一种重复神经网络模块的链式的形式,在标准RNN中,这个重复的模块只有一个非常简单的结构,例如一个tanh层。
问题:RNN很难用反向传播进行训练,存在着梯度爆炸和梯度消散的问题,并且随着深度增加,存在“long-term dependencies"。
解决:梯度爆炸:梯度剪裁 梯度消散:LSTM来抑制
LSTM同样是这样的的结构,但是重复的模块拥有一个不同的结构。不同于单一的神经网络层,这里有四个,以一种非常特殊的方式进行交互
LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。
细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。
该门会读取 h t − 1 h_{t-1} ht−1和 x t x_t xt,函数处理后通过一个sigmoid输出一个在0~1之间的数值给 c t − 1 c_{t-1} ct−1,1表示完全保留,0表示完全舍弃【忘记门要用到乘法门,乘法门进行的使哈达玛乘积运算】
输入门层会创建一个 i t i_t it向量(0~1之间)决定什么值我们将要更新。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L9lnmUV4-1580957978740)(C:\Users\11370\AppData\Roaming\Typora\typora-user-images\image-20191230103942364.png)]
然后一个tanh层创建一个新的候选向量 c ~ t \tilde{c}_t c~t,会被加入到状态中
更新细胞状态:
即丢弃要丢弃的,再加上要输入的
最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。
首先,运行一个sigmoid乘来确定细胞状态( c t − 1 c_{t-1} ct−1)的哪一部分将输出去。接着,我们把细胞状态通过tanh进行处理(得到一个-1~1的值)并将它与sigmoid门的输出相乘,最终仅仅会输出我们确定输出的那部分。在计算当前时刻的输出时,直接利用的是隐藏状态h
LSTM变体:
1.Bi-directional LSTM【 h t h_t ht接受了来自 h t − 1 h_{t-1} ht−1和 h t + 1 h_{t+1} ht+1的信息】
2.Three-structured LSTM【 h t h_t ht 来自于一个输入向量和任意多个子单位的隐藏状态 】
必要性:
memory:RNN不可以长期记忆(长期记忆=知识储备)
attention:对长期记忆加入attention(解决梯度消失问题)、 Fine-grained representation (可以聚焦于small parts)、克服了视觉处理中的计算局限、增加了可解释性
注意力模型是指在生成与图像对应的文字时,可以允许模型将注意力放到图像的不同部分.也就是CNN在图像中每一个特殊的地方都用一个向量表示,当模型向前传递时会产生一个分布,对应图像的不同位置.
End to end memory networks
将x转换为特征表示,由新得到的特征表示更新memory,根据新的输入特征和记忆来计算输出特征,最后将输出特征解码。【模型主要的参数包括A,B,C,W四个矩阵,其中A,B,C三个矩阵就是embedding矩阵,主要是将输入文本和Question编码成词向量,W是最终的输出矩阵。从上图可以看出,对于输入的句子s分别会使用A和C进行编码得到Input和Output的记忆模块,Input用来跟Question编码得到的向量相乘得到每句话跟q的相关性,Output则与该相关性进行加权求和得到输出向量。然后再加上q并传入最终的输出层。】
图片描述:
图像识别与分割
需要给每个像素都输出一个值,代表这个像素属于某一个分类
方法:
1.sliding window(滑动窗口):用滑动窗口不断在输入图像上滑动, 然后输出窗口中央的像素属于哪一类。这种方法有很大的冗余性,比如两张非常接近的patch,我们没有利用到他们的相关信息,这样导致的结果就是计算效率十分低
2.fully convolutional
Autoencoders
autoencoder是一种无监督的学习算法,主要用于数据的降维或者特征的抽取。其输出层和输入层表示相同的含义,具有相同的节点数。Autoencoder学习的是一个输入输出相同的恒等函数,不过,因为输入和输出相同,所以使得这个网络的输出没有任何意义。Autoencoder的意义在于学习中间的coder层,起到了降维的作用。在深度学习中,autoencoder可用于在训练阶段开始前,确定权重矩阵W的初始值。
Denoising Autoencoder(降噪自动编码机):在AE的基础上为了防止过拟合而对输入的数据加入噪音,并使自编码器学会去除这种噪声来获得没有被噪声污染过的真实输入,使学习到的模型具有较强的鲁棒性从而具有很好的泛化能力。【最小化重构误差】
Stacked Autoencoder(栈式自编码):把单层的AE变成多层,训练时一层一层训练。去掉了decoder;Standard, or Convolutional neural network architecture;Parameters can be fine-tuned using backpropagation(使用反向传播对参数进行微调)
Variational Autoencoder
为何不能直接用AE的decoder来生成数据? 因为这里latent space的regularity无法保证。AE只是保证training的过程中的cases的这些离散点,会导致严重的overfitting。 变分自编码器可以定义为一个自动编码器,其训练是正则化的,以避免过度拟合,并确保潜在空间有良好的性质
**实现:**VAE的encoder会输出两个向量,可以把其中一个看成是variance,一个看作是mean,同时还要再加上一个误差error,这个error是从一个高斯分布中sample出来的,最终把这三个向量合成code:
GAN
为什么要有生成器:
判别器:给定一张图片X,来判断label Y;estimate P(X|Y);但是判别器无法model P(X),也无法生成新的图像
生成器:可以model P(X),可以生成新图像
GAN优点:
GAN缺点:
Reinforcement learning
贝尔曼方程:
强化学习中,通过:策略优化和策略评估这两个步骤的迭代来学习得到最佳策略
在强化学习中,那个机制的引入使得强化学习具备了再利用与探索中寻求平衡的能力:
马尔科夫链中的马尔科夫性:t+1时刻的系统状态只与t时刻的系统状态有关,与t时刻之前的系统状态无关;从t时刻到t+1时刻的状态转移与t值无关
在状态s,按照某个策略行动之后在未来所获得反馈值得期望:价值函数
在状态s,按照某个策略采取动作a后在未来获得反馈值得期望:动作-价值函数
Q-learning:学习一个给定的state时,采取了一个特定的行动后得到的奖励是什么
其中,S代表当前状态,a代表当前状态所采取的行动,S’代表下一个状态,a’是新状态采取的行动,r代表采取这个行动所得到的奖励, γ \gamma γ是discount因子。即Q值等于即时奖励+未来奖励的discount
DQN:
DQN适用范围还是在低维、离散动作空间。DQN是求每个动作的 m a x a 1 ( s , a ) max_a1(s,a) maxa1(s,a),在连续空间就不适用了。从另一个角度看,DQN是value-based方法,其还是在间接求策略。policy gradient->直接求策略
Policy gradient:
Policy Gradient不通过误差反向传播,它通过观测信息选出一个行为直接进行反向传播,当然出人意料的是他并没有误差,而是利用reward奖励直接对选择行为的可能性进行增强和减弱,好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。
优点:
缺点:
Graph Neural Network
GCN
Imitation learning
目的是通过模仿一个expert’s behavior来学习想要的行为。它是监督学习和强化学习的结合,机器采用专家系统的demonstration(示范)而不是reward来作为learning的目标
Given:示范
Goal:训练一个策略来模仿示范
Types of imitation learning:
Behavior cloning:
simplest setting of imitation learning; 简化的监督学习
【behavior learning本质上是监督学习,在监督学习中,要求train和test数据集有相同的分布,但是behavior cloning可能做不到这一点】
Natural language processing
自然语言处理(NLP)是计算机科学和人工智能的一个领域,涉及计算机和人类(自然)语言之间的相互作用,特别是如何编写计算机程序来处理和分析大量的自然语言数据
The hierarchy of NLP:
Communication of the speaker:
Communication of the hearer:
Application:
NLP中深度学习的常见任务
NLP面临的主要问题
一是语义理解,即知识、常识的学习问题。大量的常识/知识都潜藏在我们的意识深处,AL系统的设计者几乎不可能把这些尝试都总结出来并灌输到系统中。这是NLP如何变得更深的问题
二是低资源问题,面对标注数据资源贫乏的问题,譬如小语种的机器翻译、特定领域对话系统、客服系统、多轮问答系统等,自然语言处理尚无良策。这类问题统称为低资源的自然语言处理问题。对这类问题,我们除了设法引入领域知识(词典、规则)以增强数据能力之外,还可以基于主动学习的方法来增加更多的人工标注数据,以及采用无监督和半监督的方法来利用未标注数据,或者采用多任务学习的方法来使用其他任务,甚至其他语言的信息,还可以使用迁移学习的方法来利用其他的模型。这是自然语言处理技术如何变得更“广”的问题。
Word2Vec
该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性
将CNN应用到NLP中:
word2vec为一群用来产生词向量的相关模型,网络以词表现,并且需猜测相邻位置的输入词。训练完成后,word2vec模型可用来映射每个词到一个向量,来表示词与词之间的关系
卷积神经网络进行图像分类和文本分类的比较:
图像处理应用中,卷积核处理的局部区域为图像的一小块区域,而在文本分类中卷积核处理的局部区域通常为相邻的上下几行(几个词)。因此卷积核宽度和输入矩阵宽度相等
使用卷积神经网络进行句子分类或者文档分类,卷积提取的特征与采用n-gram模式提取的特征类似
使用卷积神经网络进行句子分类,一般将句子中的每个词表示为可长度的相邻,这样句子就可以表示为矩阵,从而使得在结构上与图像类似,并再后续进行卷积处理
我们除了设法引入领域知识(词典、规则)以增强数据能力之外,还可以基于主动学习的方法来增加更多的人工标注数据,以及采用无监督和半监督的方法来利用未标注数据,或者采用多任务学习的方法来使用其他任务,甚至其他语言的信息,还可以使用迁移学习的方法来利用其他的模型。这是自然语言处理技术如何变得更“广”的问题。
Word2Vec
该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性
卷积神经网络进行图像分类和文本分类的比较:
图像处理应用中,卷积核处理的局部区域为图像的一小块区域,而在文本分类中卷积核处理的局部区域通常为相邻的上下几行(几个词)。因此卷积核宽度和输入矩阵宽度相等
使用卷积神经网络进行句子分类或者文档分类,卷积提取的特征与采用n-gram模式提取的特征类似
使用卷积神经网络进行句子分类,一般将句子中的每个词表示为可长度的相邻,这样句子就可以表示为矩阵,从而使得在结构上与图像类似,并再后续进行卷积处理