毕业设计题目:基于位置-内容信息的对象识别系统的设计与实现
毕业设计用到的及学到的技术:torch、 lua、 python
学到的知识:RNN、 注意力机制、 强化学习、 反向传播算法、 策略梯度算法
用的系统及编译器:虚拟机Ubuntu 16.04 + pycharm
毕业设计主要内容:对Google DeepMind 发的一篇论文《Recurrent Models of Visual Attention》提出的模型——RAM的训练过程做一点优化。
RAM由attention机制+RNN构成,attention机制是它的创新点。
该模型对于输入都会按顺序进行处理,每次处理一副图像中的不同的位置,然后将这些不同位置提取到的信息进行整合,以建立场景或环境的动态内部表示。在每个步骤中,模型不是一次性处理整个图像,甚至是包围框,而是根据过去的信息和任务的需求选择下一个要处理的位置。该模型中参数的数量和它执行的计算量都能够独立于输入图像的大小进行控制,而对于卷积网络而言,它的计算需求与输入的图像像素的数量呈线性关系,这二者形成了鲜明的对比。针对于该模型它所描述的是一个端到端优化过程,这是一个直接针对给定的任务训练模型的过程,并将取决于该模型所做的决策序列的性能度量进行最大化。该方法是通过反向传播算法来训练神经网络分量,并且利用策略梯度算法解决因为控制问题造成的不可微分问题。
A) 这一部分为Glimpse 传感器,这部分的作用就是给定一副图片,然后从这幅图片中选出一组该图片的子图。传感器会提取以为中心的多个不同分辨率块作为视网膜样表示。
B) 给定位置信息和输入的图片,用 A)的Glimpse Sensor来提取数据,经过线性表示得到,位置信息也经过线性表示得到,然后和也经过一个线性层,结合两者得到。Glimpse网络定义了用来产生glimpse representation的注意力网络的可训练带宽限制传感器
C) 总的来说,这是一个RNN模型。该模型的核心网络fh(.;θh)将Glimpse网络的联合内部网络的上一个时间步的作为输入,产生新的内部状态(RNN中的hidden layer,可以用于下一次的输入以及当前的输出),然后位置网络fl(.;θl)和动作网络fa(.;θa)使用该模型的新的内部状态来产生下一个位置和动作。这种基本的RNN迭代以可变的步骤重复。
RAM的训练过程中,Agent的策略是与环境的动态结合,在可能的交互系列上归纳出一个分布,Agent的目标就是在这个分布下使回报最大化:
它的梯度是近似计算得出的:
该式为REINFORCE算法,我所做的优化就是对该式的R的计算方式进行了重新设计,原模型计算方式为:
我设计的方法为:
T表示的是Agent所走的步数,M的取值范围为1或0,因为M表示的是奖励信号的取值范围,只能为1或0,为总的步数为T得情况下,奖励=1得概率。
实验结果:使用MNIST数据集实验 训练、验证、测试准确率曲线图
在MNIST数据集上优化后的效果确实还不错,但是在 CIFAR10上的效果不是很理想,原模型在CIFAR10上的效果就不是很好,准确率较低。
使用CIFAR10实验 训练、验证、测试准确率曲线图
通过这次毕业设计,学习了神经网络、RNN、注意力机制等很多知识,完成毕业设计后,我学到了很多东西,但是感觉自己的毕业设计还是有很多的缺陷。