数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
二、AlexNet
- 2012年
Hinton
和他的学生推出了AlexNet
。在当年的ImageNet
图像分类竞赛中,AlexeNet
以远超第二名的成绩夺冠,使得深度学习重回历史舞台,具有重大历史意义。
2.1 网络结构
AlexNet
有5个广义卷积层和3个广义全连接层。- 广义的卷积层:包含了卷积层、池化层、
ReLU
、LRN
层等。 - 广义全连接层:包含了全连接层、
ReLU
、Dropout
层等。
- 广义的卷积层:包含了卷积层、池化层、
网络结构如下表所示:
输入层会将
3@224x224
的三维图片预处理变成3@227x227
的三维图片。第二层广义卷积层、第四层广义卷积层、第五层广义卷积层都是分组卷积,仅采用本
GPU
内的通道数据进行计算。第一层广义卷积层、第三层广义卷积层、第六层连接层、第七层连接层、第八层连接层执行的是全部通道数据的计算。
第二层广义卷积层的卷积、第三层广义卷积层的卷积、第四层广义卷积层的卷积、第五层广义卷积层的卷积均采用
same
填充。当卷积的步长为1,核大小为
3x3
时,如果不填充0,则feature map
的宽/高都会缩减 2 。因此这里填充0,使得输出feature map
的宽/高保持不变。其它层的卷积,以及所有的池化都是
valid
填充(即:不填充 0 )。第六层广义连接层的卷积之后,会将
feature map
展平为长度为 4096 的一维向量。
编号 网络层 子层 核/池大小 核数量 步长 激活函数 输入尺寸 输出尺寸 第0层 输入层 - - - - - - 3@224x224 第1层 广义卷积层 卷积 11x11 96 4 ReLU 3@227x227 96@55x55 第1层 广义卷积层 池化 3x3 - 2 - 96@55x55 96@27x27 第1层 广义卷积层 LRN - - - - 96@27x27 96@27x27 第2层 广义卷积层 卷积 5x5 256 1 ReLU 96@27x27 256@27x27 第2层 广义卷积层 池化 3x3 - 2 - 256@27x27 256@13x13 第2层 广义卷积层 LRN - - - - 256@13x13 256@13x13 第3层 广义卷积层 卷积 3x3 384 1 ReLU 256@13x13 384@13x13 第4层 广义卷积层 卷积 3x3 384 1 ReLU 384@13x13 384@13x13 第5层 广义卷积层 卷积 3x3 256 1 ReLU 384@13x13 256@13x13 第5层 广义卷积层 池化 3x3 - 2 - 256@13x13 256@6x6 第6层 广义连接层 卷积 6x6 4096 1 ReLU 256@6x6 4096@1x1 第6层 广义连接层 dropout - - - - 4096@1x1 4096@1x1 第7层 广义连接层 全连接 - - - ReLU 4096 4096 第7层 广义连接层 dropout - - - - 4096 4096 第8层 广义连接层 全连接 - - - - 4096 1000 网络参数数量:总计约 6237万。
输出
Tensor size
采用channel last
风格描述。即227x227x3
等价于前文的3@227x227
。第6层广义连接层的卷积的参数数量最多,约3770万,占整体六千万参数的 60%。
原因是该子层的卷积核较大、输入通道数量较大、输出通道数量太多。该卷积需要的参数数量为: $ MathJax-Element-34 $ 。
编号 网络层 子层 输出 Tensor size 权重个数 偏置个数 参数数量 第0层 输入层 - 227x227x3 0 0 0 第1层 广义卷积层 卷积 55x55x96 34848 96 34944 第1层 广义卷积层 池化 27x27x96 0 0 0 第1层 广义卷积层 LRN 27x27x96 0 0 0 第2层 广义卷积层 卷积 27x27x256 614400 256 614656 第2层 广义卷积层 池化 13x13x256 0 0 0 第2层 广义卷积层 LRN 13x13x256 0 0 0 第3层 广义卷积层 卷积 13x13x384 884736 384 885120 第4层 广义卷积层 卷积 13x13x384 1327104 384 1327488 第5层 广义卷积层 卷积 13x13x256 884736 256 884992 第5层 广义卷积层 池化 6x6x256 0 0 0 第6层 广义连接层 卷积 4096×1 37748736 4096 37752832 第6层 广义连接层 dropout 4096×1 0 0 0 第7层 广义连接层 全连接 4096×1 16777216 4096 16781312 第7层 广义连接层 dropout 4096×1 0 0 0 第8层 广义连接层 全连接 1000×1 4096000 1000 4097000 总计 - - - - - 62,378,344
2.2 设计技巧
AlexNet
成功的主要原因在于:- 使用
ReLU
激活函数。 - 使用
dropout
、数据集增强 、重叠池化等防止过拟合的方法。 - 使用百万级的大数据集来训练。
- 使用
GPU
训练,以及的LRN
使用。 - 使用带动量的
mini batch
随机梯度下降来训练。
- 使用
2.2.1 数据集增强
AlexNet
中使用的数据集增强手段:随机裁剪、随机水平翻转:原始图片的尺寸为
256xx256
,裁剪大小为224x224
。每一个
epoch
中,对同一张图片进行随机性的裁剪,然后随机性的水平翻转。理论上相当于扩充了数据集 $ MathJax-Element-35 $ 倍。在预测阶段不是随机裁剪,而是固定裁剪图片四个角、一个中心位置,再加上水平翻转,一共获得 10 张图片。
用这10张图片的预测结果的均值作为原始图片的预测结果。
PCA
降噪:对RGB
空间做PCA
变换来完成去噪功能。同时在特征值上放大一个随机性的因子倍数(单位1
加上一个 $ MathJax-Element-36 $ 的高斯绕动),从而保证图像的多样性。- 每一个
epoch
重新生成一个随机因子。 - 该操作使得错误率下降
1%
。
- 每一个
AlexNet
的预测方法存在两个问题:- 这种
固定裁剪四个角、一个中心
的方式,把图片的很多区域都给忽略掉了。很有可能一些重要的信息就被裁剪掉。 - 裁剪窗口重叠,这会引起很多冗余的计算。
改进的思路是:
- 执行所有可能的裁剪方式,对所有裁剪后的图片进行预测。将所有预测结果取平均,即可得到原始测试图片的预测结果。
- 减少裁剪窗口重叠部分的冗余计算。
具体做法为:将全连接层用等效的卷积层替代,然后直接使用原始大小的测试图片进行预测。将输出的各位置处的概率值按每一类取平均(或者取最大),则得到原始测试图像的输出类别概率。
下图中:上半图为
AlexNet
的预测方法;下半图为改进的预测方法。- 这种
2.2.2 局部响应规范化
局部响应规范层
LRN
:目地是为了进行一个横向抑制,使得不同的卷积核所获得的响应产生竞争。LRN
层现在很少使用,因为效果不是很明显,而且增加了内存消耗和计算时间。- 在
AlexNet
中,该策略贡献了1.2%
的贡献率。
LRN
的思想:输出通道 $ MathJax-Element-619 $ 在位置 $ MathJax-Element-42 $ 处的输出会受到相邻通道在相同位置输出的影响。为了刻画这种影响,将输出通道 $ MathJax-Element-619 $ 的原始值除以一个归一化因子。
$ \hat a_i^{(x,y)}=\frac{a_i^{(x,y)}}{\left(k+\alpha \sum_{j=\max(0,i-n/2)}^{\min(N-1,i+n/2)}(a_j^{(x,y)})^2\right)^\beta},\quad i=0,1,\cdots,N-1 $其中: $ MathJax-Element-40 $ 为输出通道 $ MathJax-Element-619 $ 在位置 $ MathJax-Element-42 $ 处的原始值, $ MathJax-Element-43 $ 为归一化之后的值。 $ MathJax-Element-566 $ 为影响第 $ MathJax-Element-619 $ 通道的通道数量(分别从左侧、右侧 $ MathJax-Element-46 $ 个通道考虑)。 $ MathJax-Element-47 $ 为超参数。
一般考虑 $ MathJax-Element-48 $ 。
2.2.3 多GPU 训练
AlexNet
使用两个GPU
训练。网络结构图由上、下两部分组成:一个GPU
运行图上方的通道数据,一个GPU
运行图下方的通道数据,两个GPU
只在特定的网络层通信。即:执行分组卷积。- 第二、四、五层卷积层的核只和同一个
GPU
上的前一层的feature map
相连。 - 第三层卷积层的核和前一层所有
GPU
的feature map
相连。 - 全连接层中的神经元和前一层中的所有神经元相连。
- 第二、四、五层卷积层的核只和同一个
2.2.4 重叠池化
一般的池化是不重叠的,池化区域的大小与步长相同。
Alexnet
中,池化是可重叠的,即:步长小于池化区域的大小。重叠池化可以缓解过拟合,该策略贡献了
0.4%
的错误率。为什么重叠池化会减少过拟合,很难用数学甚至直观上的观点来解答。一个稍微合理的解释是:重叠池化会带来更多的特征,这些特征很可能会有利于提高模型的泛化能力。
2.2.5 优化算法
AlexNet
使用了带动量的mini-batch
随机梯度下降法。标准的带动量的
$ \mathbf{\vec v}\leftarrow \alpha\mathbf{\vec v}-\epsilon\nabla_{\vec\theta} J(\vec\theta)\\ \vec\theta\leftarrow \vec\theta+\mathbf{\vec v} $mini-batch
随机梯度下降法为:而论文中,作者使用了修正:
$ \mathbf{\vec v}\leftarrow \alpha\mathbf{\vec v}-\beta\epsilon\vec\theta-\epsilon\nabla_{\vec\theta} J(\vec\theta)\\ \vec\theta\leftarrow \vec\theta+\mathbf{\vec v} $- 其中 $ MathJax-Element-49 $ , $ MathJax-Element-50 $ , $ MathJax-Element-80 $ 为学习率。
- $ MathJax-Element-52 $ 为权重衰减。论文指出:权重衰减对于模型训练非常重要,不仅可以起到正则化效果,还可以减少训练误差。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论