东南大学软件学院研究生机器学习期末大作业.docx
- 文档编号:25676252
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:20
- 大小:2.29MB
东南大学软件学院研究生机器学习期末大作业.docx
《东南大学软件学院研究生机器学习期末大作业.docx》由会员分享,可在线阅读,更多相关《东南大学软件学院研究生机器学习期末大作业.docx(20页珍藏版)》请在冰豆网上搜索。
东南大学软件学院研究生机器学习期末大作业
研究生课程考试成绩单
(试卷封面)
院系
软件学院
专业
软件工程
学生姓名
学号
课程名称
机器学习
授课时间
2019年5月至2019年6月
周学时
4
学分
2
简
要
评
语
考核论题
总评成绩
(含平时成绩)
备注
任课教师签名:
日期:
注:
1.以论文或大作业为考核方式的课程必须填此表,综合考试可不填。
“简要评语”栏缺填无效。
2.任课教师填写后与试卷一起送院系研究生秘书处。
3.学位课总评成绩以百分制计分。
视频标注任务videocaption
1引言
随着图像描述的发展,人们开始逐渐关注视频描述,对于在线的视频检索有很大的帮助。
视频描述(videocaption)是根据视频内容给出一句文字描述。
不同于图像描述静态的信息,视频描述更为复杂,视频往往包含多帧视频图像,不仅有时序信息还有声音信息等。
这就表示一段视频比图像包含的信息更多,同时要求提取的特征也就更多,这对生成一段准确的视频描述是重大的挑战。
深度网络的出现为解决大规模视频分类问题提供了新的思路和方法。
卷积神经网络(ConvolutionalNeuralNetworks,CNN)采用卷积与池化操作,可以自动学习图像中包含的复杂特征,在视觉对象识别任务中表现出很好的性能。
2模型方法
2.1基于imagecaption的videocaption框架
近年来有关视频描述,有基于imagecaption的videocaption框架[1],如图2.1所示。
在imagecaption的基础上,使用类似的思路将CNN+LSTM的框架应用到videocaption任务上。
图1cnn+lstm框架描述
将视频分解为不同帧,针对每一帧使用CNN网络提取相应特征,利用meanpool视频不同帧的图像特征整合,输出整个视频特征。
建立多层LSTM的RNN网络,将encode编码产生的特征向量作为RNN网络每一时刻的输入,生成最终的语义caption。
双层的LSTM结构,能较大程度的在输出时衰减输入的扰动,节点数目较多,网络记忆能力强。
对所有的视频帧直接进行meanpool融合特征,缺点是忽略了每一帧特征的顺序和整个视频的时序关系。
2.2S2VT模型
为了解决传统的cnn+LSTM框架无法处理视频时序特征的问题,提出S2VT模型,将每一视频帧的图像特征以时序状态进行语义生成。
S2VT模型即SequencetoSequenceVideotoText模型[2],这个方法最早来源于2015年发表在CVPR上,实现了对视频帧序列输入、文字序列输出的一个端到端视频描述模型。
该论文提出使用了LSTM来构造encoder-decoder结构,即先使用lstmencoder来编码视频图像序列的特征,再用lstmdecoder解码出文本信息。
模型结构如下图2所示。
图2S2VT结构图
S2VT由两个LSTM网络叠加而成,第一个LSTM将通过卷积神经网络提取到的帧特征向量作为输入进行逐个编码。
一旦读取完所有的帧,模型会逐个单词的生成一个句子。
帧和单词表示的编码和解码工作由平行语料库学习得到。
为了更好地表示视频中活动的时序特点,模型还计算了连续帧之间的光学流[3],流图像也是先通过CNN网络并作为输入提供给LSTM网络,读取了所有帧,模型就逐句生成句子。
3实验数据集
实验采用的数据集为全班同学整理。
视频是央视的《共同关注》部分播放的新闻片段,来源于央视的网站。
每个视频时间在几秒到几十秒不等。
每个视频中含有主画面内容,每个视频分别对应10句中英文描述。
数据集格式:
视频信息以及视频描述以json形式保存。
视频的分类:
Category,包括0时政,1国际,2军事,3警法,4社会,5公益,6教育,7财经,8娱乐,9文化这十类。
视频的网址url,视频标识符video_id,视频片段在原始视频中的起止时间,视频属于训练集或测试集,视频编号。
具体json格式如图3所示。
图3视频信息格式
所有的视频描述存放在“sentence”对象下,每个video_id对应多条语言描述,同一个video_id下的使用0到9的id值来表示单个视频的十条描述,如图4所示。
中文描述与英文描述分别存放在不同的json文件中
图4视频标注格式
数据集的划分:
最终得到的数据集,可用视频2400条,英文描述23860条,将其中的0-1900视频作为训练集,1901-2300作为验证集,剩余100条视频做为测试集来检验
4词向量提取
4.1分词统计
对视频的描述文字进行格式化的数据转换
首先对英文描述进行分词,将完整的句子拆分成单独的英文单词,在句子的开始添加”
分词结果如图5所示。
图5词表统计
最终得到的可用单词数量是5085,所有句子中的单词有0.85%为坏词,其中坏词,即出现次数低于阈值的词汇,占所有单词比重到24.21%,由于数据集涵盖的视频较少,描述所覆盖的单词较少,因此词汇较为单一,较常见的词汇频繁出现;多数复杂词汇出现次数都只有一次,因此坏词占比较大。
分词后的部分描述,如下图6所示。
图6分词后描述
4.2词的序列化
将所有单词进行索引化操作,即为单个单词建立索引,实现单词文本到数字序列之间的映射;建立“ix_to_word”对象,实现由索引提取单词的操作;建立“word_to_ix”对象,实现由单词转化为索引的操作;如下图7所示。
图7部分单词与索引的关系
5视频特征提取
ResNet(ResidualNeuralNetwork)由微软研究院的KaimingHe等四名华人提出,通过使用ResNetUnit成功训练出了152层的神经网络。
ResNet的主要思想是在网络中增加了直连通道,即HighwayNetwork的思想。
此前的网络结构是性能输入做一个非线性变换,而HighwayNetwork则允许保留之前网络层的一定比例的输出。
ResNet的思想和HighwayNetwork的思想也非常类似,允许原始输入信息直接传到后面的层中,如图8所示。
图8resNet结构图
这样的话这一层的神经网络可以不用学习整个的输出,而是学习上一个网络输出的残差,因此ResNet又叫做残差网络。
本实验中使用的是预训练的ResNet152网络对视频画面进行图像特征的提取;该模型网络基于Image-Net进行训练,网络层数为152层;网络对每一个输入的图片输出一个2048维的特征向量;在此基础上,对视频画面随机挑选40帧,对40帧画面单独输入网络,得到画面的图像特征,最终对每一个视频,得到一个尺寸为[40,2048]的视频图像特征张量。
提取得到的视频特征以numpy.ndarray的格式进行保存;
6模型训练
6.1模型结构
本次实验采用S2VT模型[1],具体模型结构如图9所示。
图9S2VT模型图
模型使用两层RNN,每个具有512个隐藏单元。
第一个红色的LSTM层用于帧序列进行家建模,输出隐藏状态作为第二层绿色LSTM层的输入用于对最终的输出子序列进行建模。
在编码阶段,顶层LSTM接受帧序列并进行编码,第二层的LSTM接受第一层的隐含状态h,并将其与零填充符相连然后编码,当所有帧序列都输出隐含状态后,第二层的LSTM送入起始符
解码阶段,给定帧序列的隐藏状态及之前输出的单词的条件,得出预测句子的对数似然性。
6.2训练和推理过程
由顶层LSTM接受帧序列并进行编码;第二层的LSTM接受第一层的隐含状态h,并将其与零填充符相连然后编码,这个过程不计算损失值。
在所有帧都输出隐含状态后,第二层LSTM送入起始符
解码阶段进行训练时,在已经知道帧序列的隐藏状态及之前输出的单词的条件下,求预测句子的对数似然性。
训练目标为求得最大似然函数。
整个训练数据集上使用随机梯度下降算法进行优化,从而使得LSTM学习更合适的隐含状态h。
第二层LSTM的输出z通过在词汇库V中寻找最大可能性的目标单词y,具体的如下式所示:
训练过程定义的部分代码如下所示:
模型损失变化结果如下所示。
7结果生成
模型描述
Alotofboardsarefloatingonthesea
实际描述
Theship'sremainsfloatedontheshoreandgrounded.
总体上,画面与描述的内容基本相符,但在细节上缺乏描述。
参考文献
[1]VenugopalanS,XuH,DonahueJ,etal.TranslatingVideostoNaturalLanguageUsingDeepRecurrentNeuralNetworks[J].ComputerScience,2014.
[2]VenugopalanS,RohrbachM,DonahueJ,etal.SequencetoSequence--VideotoText[C]//IEEEInternationalConferenceonComputerVision.2015.
利用DCGAN生成动漫头像
1引言
伴随着人工智能的兴起,各种深度学习模型应运而生,生成式对抗网络(generativeadversarialnetworks,GAN)作为其中的一种深度学习模型成为了研究热点。
GAN已成功应用在图像处理中。
同时卷积神经网络的发展也促进了深度学习的发展,使用将CNN引入到GAN中的生成式模型中做训练,利用CNN强大的特征提取能力来提高生成式模型的学习效果,采用TensorFlow和Python代码实现了DCGAN中的D模型和G模型,生成动漫头像,实验结果表明采用DCGAN可以有效获取图像表征,生成足够“以假乱真”的图片。
2模型方法
2.1GAN模型
GAN的全称为GenerativeAdversarialNetworks,即对抗生成网络。
GAN作为深度学习模型之一于2014年由IanJ.Goodfellow等[1],根据博弈论中的二人零和博弈的思想而提出,将进行博弈的两人分为生成器(generator,G)和判别器[2](discriminator,D)来进行建模。
生成器是获得真实的数据样本中所含的隐含信息而产生新的数据样本;判别器是根据输入的数据判断是真实的数据样本还是生成器生成的数据样本,实质是二分类器。
根据博弈论[IIJ中的观点,二者为了达到各自所需要的结果,会不断优化自己,提升自己的博弈能力,同样在GAN中生成器会不断地提升自己生成数据的能力,判别器会不断地提升自己判断数据的能力。
根据概念可以得出GAN的流程,如图1所示。
图1GAN的流程
图中,z表示随机变量,服从pz(z)分布,G表示生成器,G(z)表示生成器生成的数据,x表示真实的数据样本,服从Pdata(x)分布,D表示判别器,D()表示概率。
判别器D判断输入是来自真实的数据样本还是来自生成器,若来自真实的数据样本则将其置为1,来自生成器的将其置为0。
在实际的建模中,单单有模型图还不够,还需要GAN的数学模型,根据传统GAN的概念,GAN的数学模型可以表示为:
原始的GAN是一种无监督学习方法,它能够巧妙地利用“对抗”的思想来学习生成式模型,一旦训练完成后可以生成全新的数据样本。
DCGAN将GAN的概念扩展到卷积神经网络中,可以生成质量较高的图片样本。
2.2DCGAN模型
DCGAN全称是DeepConvolutionGAN,即采用深度卷积网络对G进行建模。
G的输入是一个100维随机噪声向量,服从均匀分布,区间为[-1,1]。
CNN使用了一个全连接层和4个卷积层,通过卷积算法将高层表征转换为64*64*3的RGB图片。
第一个卷积层采用全连接100→1024,并将1024的一维向量重塑成1024个通道的4*4的特征图。
G的后面三层采用反卷积层,其通道数取半并将图像尺寸增加一倍。
如图2所示。
图2G(z)结合CNN卷积原理[3]
判别模型D是一个没有pooling的全卷积网络。
D的输入维度和G的输出保持一致,训练样本的结果输出是一个长度为1的向量,数字的范围从0到1,表示输入数据属于训练数据而非生成样本的概率。
如图3所示。
图3D(x)转置卷积原理图
3收集数据集
选取的数据是老师发送的faces文件夹下已经准备好的动漫头像的数据集,共5万多张头像,共275M左右,部分动漫头像如图4所示。
图4动漫头像
4模型训练
首先可以将GAN看做是数据生成的工具,以图片数据为例。
假设有两个网络,分别是生成网络G(Generator)和判别网络D(Discriminator),G负责生成图片,它接收一个随机的噪声z,通过该噪声生成图片,将生成的图片记为G(z)。
D是一个判别网络,判别一张图片是不是“真实的”。
它的输入参数是x,x代表一张图片,D(x)表示x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
在训练过程中,生成网络G的目标是尽量生成真实的图片去欺骗判别网络D,而D的目标是尽量把生成的图片和真实的图片区分开来。
这样,G和D就构成了一个动态的博弈过程。
在理想的状态下,G可以生成足以“以假乱真”的图片G(z)。
对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z))=0.5。
此时得到了一个生成式的模型G,可以用它来生成图片。
DCGAN在GAN的基础上,将G和D换成了两个卷积神经网络(CNN),卷积神经网络的结构需要做一些改变,来提高样本的质量和收敛的速度。
有如下几个改变:
1)取消所有pooling层。
G网络中使用转置卷积(transposedconvolutionallayer)进行上采样,D网络中用加入stride的卷积代替pooling。
2)在D和G中均使用batchnormalization
3)去掉FC层,使网络变为全卷积网络
4)G网络中使用ReLU作为激活函数,最后一层使用tanh
5)D网络中使用LeakyReLU作为激活函数
这里我们直接使用了DCGAN的TensorFlow版本,进行训练。
DCGAN在TensorFlow中已经实现,这里在源码的基础上做一些修改,来训练自己的数据,部分代码,如下所示。
5实验结果
第1个epoch跑完的情况,如图5(a)所示,结果还很模糊;第20个epoch跑完之后,慢慢清楚,如图5(b)所示;当第200个epoch跑完后,如图5(c)所示,可以看出这些图片足够以假乱真。
(a)1个epoch跑完(b)20个epoch跑完
(c)200个epoch跑完
图5实验结果
6总结
通过本次实验,简单的了解了GAN和DCGAN的原理,以及学会如何使用TensorFlow制作一个简单的生成图片的demo。
参考文献
[1]RadfordA,MetzL,ChintalaS.Unsupervisedrepresentationlearningwithdeepconvolutionalgenerativeadversarialnetworks[J].arXivpreprintarXiv:
1511.06434,2015:
4
[2]王坤峰,苟超,段艳杰等.生成式对抗网络GAN的研究进展与展望[J].自动化学报,2017,43(3):
321-332.
[3]GOODFELLOW1,POUGET-ABADIEJ,MIRZAM,etal.Generativeadversarialnets[C]//Proceedingsofthe2014conferenceonadvancesinneuralinformationprocessingsystems27.Montreal,Canada:
MITPress,2014:
2672-2680.
基于深度强化学习的FlappyBird
1引言
随着近几年人工智能的不断发展,深度学习受到越来越多的关注。
并且随着强化学习的兴起,将深度学习与强化学习算法结合起来,形成深度强化学习算法,得到了广泛的研究,将其应用到了各行各业当中。
GoogleDeepMind团队就将深度学习和强化学习相结合,提出了深度Q网络(DeepQNetwork,DQN)[1],实现端到端的学习玩Atari游戏,即只有像素输入,看着屏幕玩游戏。
2基本概念
强化学习是机器学习里面的一个分支。
它强调如何基于环境而行动,以取得最大化的预期收益。
其灵感来源于心理学中的行为主义理论,既有机体如何在环境给予的奖励或者惩罚的刺激下,逐步形成对刺激的预期,产生能够最大利益的习惯性行为。
结构简图如图1所示。
图1强化学习原理
根据上图,agent(智能体)在进行某个任务时,首先与environment进行交互,产生新的状态state,同时环境给出奖励reward,如此循环下去,agent和environment不断交互产生更多新的数据。
强化学习算法就是通过一系列动作策略与环境交互,产生新的数据,再利用新的数据去修改自身的动作策略,经过数次迭代后,agent就会学习到完成任务所需要的动作策略。
Q-Learning是强化学习算法中value-based的算法,Q即为Q(s,a)就是在某一时刻的s状态下(s∈S),采取动作a(a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报rewardr,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。
DQN属于Q-Learning算法,也是一种Value-Based算法,并不直接学习一个Policy,而是学习Critic,也就是学习如何评价当前状态的好坏,进而根据Q值选取最佳的action。
因此可以将DQN中的神经网络看做是一个复杂的Q-function,本质上,它和Q-table干的事是一样的,只不过神经网络的函数拟合能力很强,它能胜任更复杂的RL任务。
3游戏简介
FlappyBird是一款游戏,玩家控制的对象是游戏中的“小鸟”,在游戏运行瞬间有两个可以采取的动作:
按下“上升”键,使得小鸟向上跳跃,而未按下任何按键时小鸟则以恒定速率下降。
游戏接收一个Action操作,Action是一个一维数组,比如a=[0,1]当a[1]=1的时候,我们让小鸟向上飞。
如果是其它的数,小鸟下落。
游戏返回的是State,reward,terminal。
terminal是一个布尔值True或者false,它和reward是对应的。
当reward=-1时,terminal为True。
reward取值有三种(1,-1,0.1)当crash时为-1,当越过障碍时为1,其它状态为0.1。
而State的结构是类似80x80x4这样的图像。
也就是currentState,reward,newState,terminal是一条数据被保存起来了。
4数据预处理
FlappyBird游戏直接输出的像素是284×512的,但为了节省内存将其缩小为84×84大小的图像,每帧图像色阶都是0-255。
此外,为了提高卷积神经网络的精度,在这一步去除背景层并用纯黑色背景代替,以去除噪声,如图2所示。
依次对所得游戏图像进行缩放、灰度化以及调整亮度处理。
在当前帧进入一个状态之前,处理几帧图像叠加组合的多维图像数据,当前帧与先前帧重叠时,灰度稍有降低,当我们远离最新帧时强度降低。
因此,这样输入的图像将提供关于小鸟当前所在轨迹的良好信息,其处理过程如图2所示。
图2去除游戏背景
5模型训练
DQN可以处理更大的状态空间,用游戏的整幅图像直接作为输入,通过卷积神经网络去提取图像特征,最后输出各个动作对应的Q值,具体的神经网络如下图3所示。
图3DQN神经网络图
智能体是一个6层的神经网络
第一层(输入层)是80x80x4:
80x80是图片的长宽像素值,4代表每次输入用4帧图片
第二层是20x20x32:
20x20代表特征图的长宽,32代表特征图个数
第三层是5x5x64:
5x5代表特征图的长宽,64代表特征图个数
第四层是3x3x64→256x1:
3x3代表特征图的长宽,64代表特征图的个数
第五层是256x1:
256=2x2x64,是矩阵reshape的结果
第六层(输出层)是2x1:
2代表向上走的概率和向下走的概率
然后是各层的连接方式:
第一层与第二层,第二层与第三层,第三层与第四层是卷积。
第四层与第五层,第五层与第六层是全连接。
核心训练代码如下所示。
6结果
训练结束后,小鸟飞行的状态,如图4所示:
图4训练结果
在预测状态下,小鸟会自动飞翔,这时也会相应打印一些参数结果,如图5所示:
图5训练参数
7总结
本文成功的将深度的强化学习模型来玩游戏FlappyBird,模型实现了特定游戏状态下,对游戏执行的最佳动作预测,将一个游戏决策问题转换成对瞬时多维图像的分类识别问题并运用卷积神经网络加以解决。
深度神经网络在处理图像信息上有很大能力,促进了其他应用方面的发展。
参考文献
[1]MNIHV,KAVUKCUOGLUK,SILVERD,etal.Human-levelcontrolthroughdeepreinforcementlearning[J].Nature,2015,518(7540):
529-533.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 软件 学院 研究生 机器 学习 期末 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)