数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
五、感知机
5.1 定义
感知机是二分类的线性分类模型,属于判别模型。
- 模型的输入为实例的特征向量,模型的输出为实例的类别:正类取值
+1
, 负类取值-1
。 - 感知机的物理意义:将输入空间(特征空间)划分为正、负两类的分离超平面。
- 模型的输入为实例的特征向量,模型的输出为实例的类别:正类取值
设输入空间(特征空间)为 $ MathJax-Element-224 $ ;输出空间为 $ MathJax-Element-225 $ ;输入 $ MathJax-Element-226 $ 为特征空间的点;输出 $ MathJax-Element-227 $ 为实例的类别。
定义函数 $ MathJax-Element-228 $ 为感知机。其中:
- $ MathJax-Element-229 $ 为权值向量, $ MathJax-Element-230 $ 为偏置。它们为感知机的参数。
sign
为符号函数:
感知机的几何解释: $ MathJax-Element-243 $ 对应特征空间 $ MathJax-Element-232 $ 上的一个超平面 $ MathJax-Element-287 $ ,称作分离超平面。
$ MathJax-Element-234 $ 是超平面 $ MathJax-Element-287 $ 的法向量, $ MathJax-Element-236 $ 是超平面的截距。
超平面 $ MathJax-Element-287 $ 将特征空间划分为两个部分:
- 超平面 $ MathJax-Element-287 $ 上方的点判别为正类。
- 超平面 $ MathJax-Element-287 $ 下方的点判别为负类。
5.2 损失函数
给定数据集 $ MathJax-Element-240 $ ,其中 $ MathJax-Element-241 $ 。
若存在某个超平面 $ MathJax-Element-287 $ : $ MathJax-Element-243 $ , 使得将数据集中的正实例点与负实例点完全正确地划分到超平面的两侧,则称数据集 $ MathJax-Element-317 $ 为线性可分数据集;否则称数据集 $ MathJax-Element-317 $ 线性不可分。
划分到超平面两侧,用数学语言描述为: $ MathJax-Element-246 $
根据感知机的定义:
- 对正确分类的点 $ MathJax-Element-314 $ ,有 $ MathJax-Element-248 $
- 对误分类的点 $ MathJax-Element-314 $ ,有 $ MathJax-Element-250 $
- 对正确分类的点 $ MathJax-Element-314 $ ,有 $ MathJax-Element-248 $
如果将感知机的损失函数定义成误分类点的中总数,则它不是 $ MathJax-Element-251 $ 的连续可导函数,不容易优化。
因此,定义感知机的损失函数为误分类点到超平面 $ MathJax-Element-287 $ 的总距离。
对误分类的点 $ MathJax-Element-314 $ ,则 $ MathJax-Element-254 $ 距离超平面的距离为:
$ \frac{1}{||\mathbf {\vec w}||_2}|\mathbf {\vec w} \cdot\mathbf {\vec x}_i +b| $由于 $ MathJax-Element-255 $ ,以及 $ MathJax-Element-256 $ ,因此上式等于
$ \frac{- \tilde y_i(\mathbf {\vec w} \cdot\mathbf {\vec x}_i +b)}{||\mathbf {\vec w}||_2} $不考虑 $ MathJax-Element-262 $ ,则得到感知机学习的损失函数:
$ L(\mathbf {\vec w},b)=-\sum_{\mathbf {\vec x}_i \in \mathbb M}\tilde y_i(\mathbf {\vec w} \cdot\mathbf {\vec x}_i +b) $其中:
- $ MathJax-Element-272 $ 为误分类点的集合。它隐式的与 $ MathJax-Element-307 $ 相关,因为 $ MathJax-Element-307 $ 优化导致误分类点减少从而使得 $ MathJax-Element-261 $ 收缩。
- 之所以不考虑 $ MathJax-Element-262 $ ,因为感知机要求训练集线性可分,最终误分类点数量为零,此时损失函数为零。即使考虑分母,也是零。若训练集线性不可分,则感知机算法无法收敛。
- 误分类点越少或者误分类点距离超平面 $ MathJax-Element-287 $ 越近, 则损失函数 $ MathJax-Element-264 $ 越小。
对于特定的样本点,其损失为:
- 若正确分类,则损失为 0 。
- 若误分类,则损失为 $ MathJax-Element-307 $ 的线性函数。
因此给定训练集 $ MathJax-Element-317 $ ,损失函数 $ MathJax-Element-267 $ 是 $ MathJax-Element-307 $ 的连续可导函数。
5.3 学习算法
给定训练集 $ MathJax-Element-295 $ ,求参数 $ MathJax-Element-307 $ :
$ MathJax-Element-271 $ 。
5.3.1 原始形式
假设误分类点集合 $ MathJax-Element-272 $ 是固定的,则损失函数 $ MathJax-Element-277 $ 的梯度为:
$ \nabla_\mathbf {\vec w} L(\mathbf {\vec w},b)=- \sum_{\mathbf {\vec x}_i \in \mathbb M}\tilde y_i \mathbf {\vec x}_i \\ \nabla_b L(\mathbf {\vec w},b)=-\sum_{\mathbf {\vec x}_i \in\mathbb M}\tilde y_i $通过梯度下降法,随机选取一个误分类点 $ MathJax-Element-314 $ ,对 $ MathJax-Element-307 $ 进行更新:
$ \mathbf {\vec w} \leftarrow \mathbf {\vec w}+\eta\tilde y_i\mathbf {\vec x}_i \\ b \leftarrow b+\eta\tilde y_i $其中 $ MathJax-Element-309 $ 是步长,即学习率。
通过迭代可以使得损失函数 $ MathJax-Element-277 $ 不断减小直到 0 。
感知机学习算法的原始形式:
输入:
- 线性可分训练集 $ MathJax-Element-308 $
- 学习率 $ MathJax-Element-309 $
输出:
- $ MathJax-Element-280 $
- 感知机模型: $ MathJax-Element-281 $
- $ MathJax-Element-280 $
步骤:
选取初始值 $ MathJax-Element-306 $ 。
在训练集中选取数据 $ MathJax-Element-286 $ 。若 $ MathJax-Element-284 $ 则:
$ \mathbf {\vec w} \leftarrow \mathbf {\vec w}+\eta\tilde y_i\mathbf {\vec x}_i \\ b \leftarrow b+\eta \tilde y_i $在训练集中重复选取数据来更新 $ MathJax-Element-307 $ 直到训练集中没有误分类点。
5.3.2 性质
对于某个误分类点 $ MathJax-Element-286 $ ,假设它被选中用于更新参数。
- 假设迭代之前,分类超平面为 $ MathJax-Element-287 $ ,该误分类点距超平面的距离为 $ MathJax-Element-288 $ 。
- 假设迭代之后,分类超平面为 $ MathJax-Element-289 $ ,该误分类点距超平面的距离为 $ MathJax-Element-290 $ 。
则:
$ \Delta d=d'-d=\frac{1}{||\mathbf {\vec w}^{\prime}||_2}|\mathbf {\vec w}^{\prime} \cdot\mathbf {\vec x}_i+b'|-\frac{1}{||\mathbf {\vec w}||_2}|\mathbf {\vec w} \cdot\mathbf {\vec x}_i+b| \\ =-\frac{1}{||\mathbf {\vec w}^{\prime}||_2}\tilde y_i(\mathbf {\vec w}^{\prime} \cdot\mathbf {\vec x}_i+b')+\frac{1}{||\mathbf {\vec w}||_2}\tilde y_i(\mathbf {\vec w} \cdot\mathbf {\vec x}_i+b)\\ \simeq -\frac{\tilde y_i}{||\mathbf {\vec w}||_2}[(\mathbf {\vec w}^{\prime}-\mathbf {\vec w})\cdot \mathbf {\vec x}_i +(b'-b)]\\ =-\frac{\tilde y_i}{||\mathbf {\vec w}||}[\eta \tilde y_i \mathbf {\vec x}_i\cdot \mathbf {\vec x}_i +\eta \tilde y_i]\\ =-\frac{\tilde y_i^{2}}{||\mathbf {\vec w}||_2}(\eta \mathbf {\vec x}_i \cdot \mathbf {\vec x}_i +1) \lt 0 $因此有 $ MathJax-Element-291 $ 。
这里要求 $ MathJax-Element-292 $ ,因此步长 $ MathJax-Element-293 $ 要相当小。
几何解释 :当一个实例点被误分类时,调整 $ MathJax-Element-307 $ 使得分离平面向该误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过所有的误分类点以正确分类。
感知机学习算法由于采用不同的初值或者误分类点选取顺序的不同,最终解可以不同。
5.3.3 收敛性
感知机收敛性定理:设线性可分训练集 $ MathJax-Element-295 $ 。
存在满足 $ MathJax-Element-296 $ 的超平面: $ MathJax-Element-297 $ ,该超平面将 $ MathJax-Element-304 $ 完全正确分开。
且存在 $ MathJax-Element-299 $ ,对所有的 $ MathJax-Element-300 $ 有: $ MathJax-Element-301 $ 。
其中 $ MathJax-Element-302 $ 。
令 $ MathJax-Element-303 $ ,则感知机学习算法原始形式在 $ MathJax-Element-304 $ 上的误分类次数 $ MathJax-Element-305 $ 满足:
$ k \le (\frac {R}{r})^{2} $
感知机收敛性定理说明了:
当训练集线性可分时,感知机学习算法原始形式迭代是收敛的。
- 此时算法存在许多解,既依赖于初值,又依赖于误分类点的选择顺序。
- 为了得出唯一超平面,需要对分离超平面增加约束条件。
当训练集线性不可分时,感知机学习算法不收敛,迭代结果会发生震荡。
5.3.4 对偶形式
根据原始迭代形式 :
$ \mathbf {\vec w} \leftarrow \mathbf {\vec w}+\eta\tilde y_i\mathbf {\vec x}_i \\ b \leftarrow b+\eta\tilde y_i $取初始值 $ MathJax-Element-306 $ 均为 0。则 $ MathJax-Element-307 $ 可以改写为:
$ \mathbf {\vec w}=\sum_{i=1}^{N} \alpha_i \tilde y_i \mathbf {\vec x}_i\\ b=\sum_{i=1}^{N} \alpha_i \tilde y_i $这就是感知机学习算法的对偶形式。
感知机学习算法的对偶形式:
输入:
- 线性可分训练集 $ MathJax-Element-308 $
- 学习率 $ MathJax-Element-309 $
输出:
- $ MathJax-Element-310 $ ,其中 $ MathJax-Element-311 $ 。
- 感知机模型 $ MathJax-Element-312 $ 。
步骤:
- 初始化: $ MathJax-Element-313 $ 。
- 在训练集中随机选取数据 $ MathJax-Element-314 $ ,若 $ MathJax-Element-315 $ 则更新:
- 在训练集中重复选取数据来更新 $ MathJax-Element-316 $ 直到训练集中没有误分类点。
在对偶形式中, 训练集 $ MathJax-Element-317 $ 仅仅以内积的形式出现,因为算法只需要内积信息。
可以预先将 $ MathJax-Element-318 $ 中的实例间的内积计算出来,并以矩阵形式存储。即
Gram
矩阵: $ MathJax-Element-319 $与原始形式一样,感知机学习算法的对偶形式也是收敛的,且存在多个解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论