1: NN调参技巧
用5%或者10%的数据,训练20个epoch,观察summary变量或者loss的轨迹和变化,用来确定模型结构和训练方式;
一些常用的小技巧,选tanh而不用sigmoid用做激活函数,是否用batch normalization,平衡深度和广度,参数initializer选用uniform或者是gaussian分布,dropout的选择,是否在feed数据流的时候就用dropout还是在模型里面用dropout;
bengio之前发表过一篇很有意思的论文curriculum learning,说的是观察到unsupervised learning做数据预处理之后再训练效果很好,他认为先让模型训练简单数据再训练复杂数据能收敛到更好的结果,然后提出了一些sample reweight的方法;也可以采纳他的思想;
2: 矩阵
矩阵可以看作多维线性空间的坐标变换;
矩阵可逆可以看过多维线性空间的坐标可逆变换;
矩阵不可逆可以看做 多维空间到低维空间的映射,注意到这种映射是不可逆的,但是可以用作信息压缩,pca就是代表;
3: LSTM为什么可以解决RNN长期依赖的问题:
1:将RNN里面很简单的循环结构扩展到了三个分门别类的子结构,即forget gate, input gate, output gate,每个结构都有各自的功能和作用,用来更好的处理长期信息流动;
2:LSTM里面包含两个state:cell state和hidden state;贯穿始终的是cell state,forget gate控制上一个cell state的记忆或者遗忘,input state控制当前输入对cell state照成的信息的变化, output gate负责输出当前的hidden state;
4: 简单介绍alphago的算法:
1:利用CNN和人类对弈的棋谱,能够在每个state下产生一个初始的落子分布;
2:主要还是靠reinforcement learning,学习Q(s,a), 即任意状态下采取不同action所带来的state value的变化,通过MCTS,蒙特卡罗树搜索模型来模拟s,a的变化过程;
5: cnn的一些基本原理:
局部连接: 权值共享 池化 多层次
局部连接 : 提取数据的局部特征
权值共享: 一个filter提取一个特征, 分工协作
池化与多层次结构:数据的降维,减少不必要参数
6: 什么是local conv
一般做卷积都是全局的,就是说128*128的图像,用5*5的filter在x和y轴平移做filtering,但是local conv的话,每个filter使用不同的参数,就是说参数量变为124*124*5*5;
后接了3个Local-Conv层,这里是用Local-Conv的原因是,人脸在不同的区域存在不同的特征(眼睛/鼻子/嘴的分布位置相对固定),当不存在全局的局部特征分布时,Local-Conv更适合特征的提取。
7: dropout & regularization & normalization
Dropout: 多层全连接神经网络加上dropout之后,在数学上等同于深度高斯过程,实际上也可以看成频率派和贝叶斯派的区别;RNN里面加入dropout,直觉上可以理解为加入了随机遗忘机制,可以堪称forget gate的一种延伸;CNN里面加入dropout,直觉上可以理解成部分特征丢失;
Regularization: 首先想到就是线性回归里面的lasso和ridge;
Regularization从哲学上来看是一种occam’s razor(不同模型相当效果,选假设最好的那个)的体现,从贝叶斯的角度来看,是对参数加一层先验分布;一般常用L1,L2,max norm的regularization在tensorflow里面,但是我感觉用了dropout之后用regularization提升极小,有时候负提升;
Normalization:主要是batch normalization, BN本质上解决的是反向传播过程中的梯度问题; 总结起来就是BN解决了反向传播过程中的梯度问题(梯度消失和爆炸),同时使得不同scale的 w 整体更新步调更一致。
8: MLP, CNN, RNN等结构的BP推倒;
熟悉矩阵求导就很容易推倒;