面试问题1之实验

1 说说看你这篇论文说的是什么

论文的背景就是想要对不规则的数据例如拓扑图这种数据进行数据挖掘
围绕这个问题,这篇论文就做了两件事
第一,这篇论文通过一系列的数学推导,类比了傅里叶变换,定义出了一种能很好地提取图结构节点特征的方法。
第二 对一些数据集进行实验,构造图结构查看分类的效果怎么样。

以上就是论文的内容

(追问)论文中提出的这个方法能具体解释一下吗

建立一个神经网络,输入图的邻接矩阵和节点特征矩阵,然后把它们跟每层的神经元的权值相乘,实现值得前向传播

2 实验是怎么做的(实验内容)

实验过程可以分两个阶段
1、第一部分是进复现了论文中的实验
第二部分在原实验的基础上加深网络层次到了三层四层并且进行可视化,观察正确率。
具体来说就是 先搭建一个两层的GCN模型,初始化参数,然后用训练数据集进行优化,训练成功之后,再加深网络层数观察正确率的变化

2 怎么学习的

刚开始
根据实验室老师方向读论文(很宽泛的范围,机器学习、深度学习、神经网RNN、CNN、GCN这一类的)

后来实践(实验)
1、向老师学长请教学习方向
2、细读论文(网上资料)、自学pytorch(官方文档和网课)、读开源代码、写博客、

3 遇到过的困难(怎么解决的呢)

困难主要有三大块 一是英语方面,二是数学方面,三是具体实验过程中会遇到一些问题
第一个英语方面,因为在学习相关知识的过程中 是要读大量的英文论文,第二是论文中涉及很多抽象的数据推导,理解这些数学公式的定义也有一定难度,第三是自学过程中配置环境、学习pytorch比较有挑战
1、读论文的时候一般会查找网上的论文笔记,结合一些他人的理解,读过几篇论文之后 看英文文献的能力就会有很大的提升了
2、数学方面的话就是多思考
3、万事开头难,初期的学习完备之后,后期进入实验室的学习顺利很多。

说说你这个研究的作用

GCN主要用在自然语言处理方向,对不规则的数据进行数据挖掘。通俗点说就是让机器能看懂输入的数据,输出我们想到的到的结果。
例如这篇论文就是把GCN用到了文本分类上,输入了一些论文,然后输出论文的分类。
GCN也能用在构建知识图谱时的知识提取的步骤

3这个实验的实现原理是什么(神经网络的原理是什么)

实现过程由两部分组成:一个是前向传播计算输出值,一个是后向传播调整权值
1、前向传播的过程利用一些计算公式 得出分类情况,与实际值比较得出误差函数
2、反向传播会根据误差函数和梯度下降算法,调整参数,对网络进行优化

(追问)我看你实验过程中还画了曲线是吧,是用的matlab吗 能解释这个acc和loss曲线是什么意思,大概是什么走向吗

没有用matlib,我是用的python里的一个拓展库matplotlib(plt)画的图
1、神经网络的训练过程中需要多次正向反向的传播来调整参数,这个accuracy曲线就是每次传播的正确率,loss就是损失率
loss是逐渐山峰式的下降的一种走向
accuary是正好相反上升的一个走向

我看你是处理的图结构是吧,你这个数据集是怎么构成图结构的

延续了kipf论文中所做实验的方法,用的one—hot独热编码,就是维护一个单词表,把词变成一个单位列向量,
不会的话如何搪塞:我一直把学习重心放到了模型方面,数据处理这方面确实了解得不够,以后会继续加强一下这方面的学习

(追问)为什么想到要增加层数来优化,你本来的实验预期是结果是什么

一层神经网络只能提取局部的信息,层数增多后,提取的信息会更加详细,更加的全局化。因此理论上应该是层数越多越准确。

做实验之前,我就了解到GCN在浅层网络方面效果好,所以只打算加深到五层
本来预期的设想是:从正确率会在三层或者四层提升至一个饱和状态然后再下降,但是没想到三层的时候,就已经出现正确率下降的情况了

(追问)实验的具体结果怎么样

在两层的GCN模型中准确率达到了82%左右,加深到了3层之后准确率会有小幅度的下降达到了76%,四层之后就下降的特别厉害只有53%了。

(追问)为什么会出现这样的结果

原因是GCN层数增加之后产生了梯度消失以及节点平滑的现象
具体解释的话
梯度消失是因为神经网络的训练算法梯度下降机制导致的,是层数过深时会导致某一层的梯度降为0,这样的话该网络的参数无法获得优化,准确率就会下降
节点平滑是因为GCN层数过深,会导致每个节点

(追问)解释一下梯度消失吧

是因为产生了梯度消失
因为神经网络的优化机制是梯度下降算法,某层的梯度是前面几层梯度的累乘,如果反向传播调整权值的时候最后一层梯度小于1, 层数越多,累乘之后的梯度就会越接近于0,此时梯度下降算法就没办法起到优化神经网络的作用,这时候再增加层数,神经网络不会得到优化 。

(追问)有想过如何解决梯度消失吗

1、梯度消失的根源是深度网络或者激活函数的问题。
2、实验中我刻意避免了sigmol函数,神经网络各层间的传递都使用了可以避免梯度消失的rule函数。
3、但是之所以到第五层依旧产生梯度消失的原因要归结于整个优化机制采用的是梯度下降算法,因此从这个角度来看梯度消失是不可避免的。

(追问)有想过怎样改进使这个实验结果更好吗

有看到过CV顶会上一篇关于GCN深度的论文,
梯度消失问题的话:这篇论文就是借鉴了深层卷积神经网络解决梯度消失的方法,是把残差机制和密集卷积的思想加入到了GCN的模型中

节点平滑问题是:利用了一个空洞提取的一种思想
这些我还在学习,也只是概括性的读了一些论文,理解不够深刻,还需要继续深入学习

(追问)改进实验的这几个机制你能大体解释一下吗

我只是大体的了解了一些浅层内容,我的理解是
**1、残差机制和密集卷积:**是在神经网络层之间,加上一个直接映射层,这个直接映射可以实现网络层之间的跳层连接
**2、空洞提取:**就是扩大卷积核,但是不增加卷积核的参数,在卷积核上形成一些空洞

(追问) 有查阅过关于GCN除此之外,其他可以改进的地方吗

有看过一些论文
有论文提出了一种attention机制来对数据进行降维,减少信息处理量
potorch去年也推出了可以加速特征提取的加速库
这些我还在学习中

(追问)你刚才提到自然语言处理 能具体说说自然语言处理吗,或者说你这个研究是怎么用在自然语言处理上的

自然语言就是让机器能够理解我们日常生活中的自然语言,例如中文,英语,然后得到一些我们想要的输出。
自然语言处理可以用于 机器翻译、文本分类、垃圾邮件的过滤、知识图谱方向
像这个论文里的实验就是解决了自然语言处理中的文本分类问题

4 你亲自跑过这个实验吗

跑过,并且在这个实验的基础上有过一些探索,尝试加深了神经网络的层数,并用可视化的方法得出了梯度消失的结论。

6 有什么区别

区别可以从两方面来说
1、第一 是面向数据类型不同
2、第二 是由于处理数据类型的不同定义出了不同的提取特征的操作
具体来说就是RNN倾向于解决例如语音、句子等序列数据
而CNN更倾向于规则数据例如图像
GCN则用在不规则数据上更多一些
针对于以上数据的处理,他们各自定义了不同的特征提取操作

anaconda是一个集成的用于科学计算的开发环境
每层之间都加了dropout防止过拟合

猜你喜欢

转载自blog.csdn.net/yunxiu988622/article/details/105591517