深度学习的杂七杂八
1. 神经网络的搭建原则
在学习和实践深度学习的时候,对于神经网络的搭建过程感觉蛮好奇的。现在主流的框架tensorflow、pytorch等都封了一系列底层模块,搭神经网络有点类似拼积木,embedding、Conv2d、LSTM、Linear组合起来加上各**函数、在确定优化器、损失函数,就组了一个模型出来,那么在设计这个模型的时候是依据什么原则进行规划的呢?
一般我会在NLP分析里加上embedding(用预训练的词向量模型)、卷积(类似于提取n-grams信息)、max_pool(最大池化用的比较多,例如把(4,4)取最大值变成(2,2))、双向结构(正序、倒序提取上下文信息),在时间序列分析中加入循环结构(进行长期记忆),优化器一般就是adma,损失函数采用交叉熵之类,**函数除了tanh之外常用的也用过了,过拟合就塞dropout,剩下的一些就瞎jb搭,看模型结果,再结合一些相关论文改改。
就挺懵的吧。
2. 基础知识
-
梯度下降SGD:随机选择一个方向,向梯度下降最大的方向前进,直到最低点,已经不会手搓求导了ε=(´ο`*)))唉
-
优化器解释:基本是围绕梯度下降来搞,基于动量的、自适应的一些改进工作,比较nice的就是可以在训练中调整学习率的值
https://blog.csdn.net/yzy_1996/article/details/84618536?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param -
全连接层维度:一般是2的指数次幂(内存管理在字节(byte)级别上进行)或者最终分类数,但是LeNet5倒数第二个全连接层维度为84,因为位图在计算机中的大小是7*12
-
softmax:输出各类别的概率,和为1,作为神经网络最后的输出。例如某个4分类问题,对于一条样本A,期望输出的概率为p=(1, 0, 0, 0),实际输出的概率为q=(0.6,0.1,0.1,0.2),那么交叉熵=-log0.6=0.51