机器学习算法实现解析——word2vec源码解析
Posted zhiyong_will
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习算法实现解析——word2vec源码解析相关的知识,希望对你有一定的参考价值。
在阅读本文之前,建议首先阅读“简单易学的机器学习算法——word2vec的算法原理”(目前还没发布),掌握如下的几个概念:
- 什么是统计语言模型
- 神经概率语言模型的网络结构
- CBOW模型和Skip-gram模型的网络结构
- Hierarchical Softmax和Negative Sampling的训练方法
- Hierarchical Softmax与Huffman树的关系
有了如上的一些概念,接下来就可以去读word2vec的源码。在源码的解析过程中,对于基础知识部分只会做简单的介绍,而不会做太多的推导,原理部分会给出相应的参考地址。
在wrod2vec工具中,有如下的几个比较重要的概念:
- CBOW
- Skip-Gram
- Hierarchical Softmax
- Negative Sampling
其中CBOW和Skip-Gram是word2vec工具中使用到的两种不同的语言模型,而Hierarchical Softmax和Negative Sampling是对以上的两种模型的具体的优化方法。
在word2vec工具中,主要的工作包括:
- 预处理。即变量的声明,全局变量的定义等;
- 构建词库。即包含文本的处理,以及是否需要有指定词库等;
- 初始化网络结构。即包含CBOW模型和Skip-Gram模型的参数初始化,Huffman编码的生成等;
- 多线程模型训练。即利用Hierarchical Softmax或者Negative Sampling方法对网络中的参数进行求解;
- 最终结果的处理。即是否保存和以何种形式保存。
对于以上的过程,可以由下图表示:
在接下来的内容中,将针对以上的五个部分,详细分析下在源代码中的实现技巧,以及简单介绍我在读代码的过程中对部分代码的一些思考。
1、预处理
在预处理部分,对word2vec需要使用的参数进行初始化,在word2vec中是利用传入的方式对参数进行初始化的。
在预处理部分,实现了sigmoid函数值的近似计算。在利用神经网络模型对样本进行预测的过程中,需要对其进行预测,此时,需要使用到sigmoid函数,sigmoid函数的具体形式为:
以上是关于机器学习算法实现解析——word2vec源码解析的主要内容,如果未能解决你的问题,请参考以下文章
项目实战解析:基于深度学习搭建卷积神经网络模型算法,实现图像识别分类
Spark MLlib机器学习算法源码及实战讲解pdf电子版下载