数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四、应用
4.1 逐像素输出
卷积神经网络不仅可以输出分类任务的标签或者回归任务的实数值,还可以输出高维的结构化对象。如:图片上每个像素属于各个类别的概率。这允许模型标记图像中的每个像素,并绘制单个物体的精确轮廓。
这种结构化对象用张量表示。如:张量 $ MathJax-Element-342 $ ,其中 $ MathJax-Element-343 $ 是网络的输入像素 $ MathJax-Element-344 $ 属于类 $ MathJax-Element-345 $ 的概率。
对图像进行逐个像素标记的一种策略是:先产生图像标记的一个原始猜测;然后使用相邻像素之间的校验来修正该原始猜测;重复上述修正步骤直到收敛。
如下图所示:输入图像张量 $ MathJax-Element-354 $ , 输出每个像素的类别张量 $ MathJax-Element-347 $ 。
该网络并不是一次性输出结果 $ MathJax-Element-348 $ ,而是使用前一轮的输出 $ MathJax-Element-349 $ 来改善结果 $ MathJax-Element-350 $ 。
每一步对 $ MathJax-Element-351 $ 执行卷积的卷积核都是张量 $ MathJax-Element-362 $ 。
每一步产生的 $ MathJax-Element-360 $ 都需要两个输入:
一个输入是通过对图像 $ MathJax-Element-354 $ 采用核 $ MathJax-Element-362 $ 来卷积。
一个输入是通过对前一个输出 $ MathJax-Element-356 $ 采用核 $ MathJax-Element-363 $ 进行卷积。
第一次产生 $ MathJax-Element-358 $ 时,这一项为零,因为还没有前一次输入。
张量 $ MathJax-Element-359 $ 用于产生从 $ MathJax-Element-360 $ 到 $ MathJax-Element-361 $ 的输出。
每一次重复修正相当于再一次执行同样的卷积(卷积核为 $ MathJax-Element-362 $ )。
很多个这样的卷积组成了一个深层网络,该网络的最后几层之间存在跨层的权值连接(连接权重为 $ MathJax-Element-363 $ )。
这种跨层的权值连接构成了反馈,因此这种深层网络形成了一个特殊的循环神经网络。
一旦对每个像素都进行了一次预测,就可以用各种方法来进一步处理这些预测的结果。
常规思路是:假设大片相连的像素对应于相同的标签。
4.2 可变输入类型
卷积神经网络使用的数据通常包含多个通道:每个通道都是时间/空间上一个点的某个角度的观测量。
同一个点,观测的角度不同,就产生了不同的通道。如:
三维的单通道:立体成像的数据。每个点代表了三维空间的一个点。
- 三维:空间的三个维度。
- 单通道:数据通道。
三维的多通道:彩色视频数据。时间维度+二维空间(图像)+色彩通道(红绿蓝三通道)
- 三维:时间维度(一维)+ 图像维度(二维)。
- 多通道:色彩通道(红绿蓝三通道)。
卷积神经网络还可以处理具有变化的空间尺度的输入。如:输入图片的尺寸可能各不相同。
这种不同尺寸大小的输入,无法使用传统的基于矩阵乘法的神经网络来表示。
因为不同样本的输入的维度可能不同,所以权重矩阵的形状无法确定。
卷积神经网络可以处理这种情况:根据输入图片尺寸的大小,核会被自动的的使用不同次数。
- 如果要求网络的输出尺寸和输入尺寸是一样的(如:为每个输入像素分配类别标签),则无需做额外的工作。
- 如果要求网络的输出尺寸是固定的(如:为整个图像分配一个类别标签),此时需要插入一个池化层:池化区域的大小要和输入的大小成比例,从而保持固定数量的池化输出。
卷积能处理可变大小的输入,但这种“可变”必须是因为同一个事物在同一个角度下的、不同数量的观察不同导致的。
如:时间角度下的、数量上的不同观察导致时间维度可变,空间角度下的、数量上的不同观察导致空间维度可变。
这种可变并不包括特征数量(即:多少个观察角度)的可变。
如:某个样本具有 “年龄、学历、性别”特征,另一个样本只具有“年龄、学历”特征。则卷积对于这种类型的数据集无能为力。
4.3 高效的卷积算法
设计更快的卷积、或者近似卷积而不降低模型准确率的方法是一个活跃的研究领域。
甚至仅提高前向传播效率的技术也是有用的。因为在商业环境中,通常对模型的推断有性能要求或者限制。
4.3.1 傅里叶变换
卷积等效于:使用傅里叶变换将输入和核都转换到频域,然后在频域将输入和核进行逐点相乘,最后把相乘的结果使用傅里叶逆变换转换回时域。
对于某些规模的问题,这种算法可能比直接计算离散卷积效率更高。
4.3.2 可分离卷积
对于一个 $ MathJax-Element-374 $ 维的核矩阵,如果可以表示成 $ MathJax-Element-374 $ 个一维向量的外积时,称该核是可分离的。
这里的外积不同于代数意义上的叉乘,而是:
$ \mathbf{\vec a}\otimes \mathbf{\vec b}= \begin{bmatrix}a_1\\ a_2 \\ \vdots\\ a_M\end{bmatrix}\otimes\begin{bmatrix}b_1 \\ b_2 \\ \vdots\\ b_N\end{bmatrix}=\begin{bmatrix}a_1b_1&a_1b_2&\cdots&a_1b_N\\ a_2b1&a_2b_2&\cdots&a_2b_N\\ \vdots&\vdots&\ddots&\vdots\\ a_Mb_1&a_Mb_2&\cdots&a_Mb_N\end{bmatrix} $当核 $ MathJax-Element-368 $ 是可分离时,假设有: $ MathJax-Element-367 $ 。
直接使用 $ MathJax-Element-368 $ 进行卷积运算是非常低效的。它等价于连续的对 $ MathJax-Element-374 $ 个一维向量 $ MathJax-Element-375 $ 执行卷积。
由于 $ MathJax-Element-371 $ ,因此直接计算卷积需要 $ MathJax-Element-373 $ 个参数,需要 $ MathJax-Element-373 $ 的运行时间和存储空间。
如果使用可分离卷积,则只需要连续的对 $ MathJax-Element-374 $ 个一维向量 $ MathJax-Element-375 $ 执行卷积。
此时需要 $ MathJax-Element-377 $ 个参数,只需要 $ MathJax-Element-377 $ 的运行时间和存储空间。
但遗憾的是:并不是每个核都是可分离的。
4.4 非监督的特征
通常卷积神经网络训练中代价最高的是学习卷积核,而输出层的学习代价相对较低。
- 因为卷积核的输入单元相对较多,而且卷积神经网络中可能需要学习多个卷积核。
- 经过了若干个池化层之后,输出层的输入单元的数量要小的多。
每个卷积核都可以提取某个特征,因此学习卷积核就是要学习特征。
降低卷积神经网络训练成本的方法是:使用那些非监督方式训练得到特征。
有三种基本策略来避免监督训练而得到特征:
- 简单地随机初始化特征。
- 人工设计特征。如:人工设计一个检测图像边缘的卷积核。
- 用无监督训练来学习特征。
4.5.1 随机初始化特征
随机初始化特征经常在卷积网络中表现的出乎意料的好。
随机初始化特征训练卷积神经网络的步骤是:
给出多个随机权重,生成一组候选的卷积核(这些卷积核可以是不同尺寸的)。
仅仅训练输出层来评估这一组候选卷积核的性能,挑选表现最好的那个卷积核。
训练过程中,卷积核的权重固定,不会被调整。
使用表现最好的那个卷积核的结构和权重,并重新训练整个网络。
训练过程中,卷积核的权重会被调整。
4.5.2 无监督学习特征
使用无监督学习特征来训练卷积神经网络时,允许其结构与输出层相分离。
其步骤是:
- 使用无监督学习特征。
- 提取训练集的全部特征,构建一个新的训练集。
- 将这个新的训练集作为输出层的输入,训练一个简单的神经网络(可能只有一个输出层,也可能添加一层隐层)。
无监督学习特征可以使用一些特殊的方法来学习,它不需要在每个梯度步骤中都完整的前向和反向传播。
如:逐层贪心预训练。逐层贪心预训练的经典模型是卷积深度信念网络。
使用无监督学习特征来训练卷积神经网络时,训练过程中可以完全不使用卷积。
通过该方法可以训练非常大的模型,并且只在前向传播期间产生高计算成本(反向传播阶段计算成本较低,因为大量的参数并不参与训练)。
当前大多数卷积神经网络以纯粹有监督的方式训练,因为计算能力比以前大幅度提升。
有监督的方式训练的预测能力更强。
无监督学习特征的优点难以说清:
- 使用无监督学习特征可以提供一些相对于监督训练的正则化。
- 使用无监督学习特征可以训练更大的网络结构,因为它的学习方式减少了计算成本。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论