摘要:TensorFlow,机器学习构建模块和算法合集。
TensorFlow——岂止于深度学习。TensorFlow提供了“一揽子”常用数值计算和机器学习算法的构建模块。在本文中,作者将介绍广泛使用的机器学习算法以及它们在TensorFlow的tf.contrib中的构建模块。Note:许多tf.contrib中的稳定模块将会移到TensorFlow的主模块。
High level的TF.Learn Estimator
TF.Learn 是TensorFlow内部的high-level模块,并提供各种机器学习算法以及相应的estimator模块。除了简单易用的深度学习API(Deep Neural Networks,Recurrent Neural Networks等)外,TensorFlow提供的流行的机器学习算法如下,包括且不限于:
- K均值聚类(K-means clustering)
- 随机森林(Random Forests)
- 支持向量机(SVM)
- 高斯混合模型聚类(Gaussian Mixture Model clustering)
- 线性/逻辑回归(Linear/logistic regression)
学习如何构建自定义机器学习estimator,请看上篇文章《深度解析TensorFlow组件Estimator:构建自定义Estimator》。
Statistical Distribution
TensorFlow提供了主流的各种统计分布函数,在tf.contrib.distributions中,包括且不限于Bernoulli,Beta, Chi2,Dirichlet,Gamma,Uniform等分布函数。这些统计分布函数是构建机器学习算法的重要构建模块,特别是像Bayesian这一类的概率模型。
Layer Component
在tf.contrib.layers内部,有许多产生layer操作及其相关权重和偏差变量的函数。这些大部分都是用来构建不同深度学习架构的。也有些函数是提供归一化,卷积层,dropout层(注:Dropout是在训练过程中以一定概率1-p将隐含层节点的输出值清0),‘one-hot’编码等。下面来粗略浏览一下:
- tf.contrib.layers.optimizers模块:tf.contrib.layers.optimizers包括的优化器有Adagrad,SGD,Momentum等。它们用来解决数值分析的优化问题,比如,优化参数空间寻找最优模型;
- tf.contrib.layers.regularizers模块:tf.contrib.layers.regularizers包括的正则化有L1规则化和L2规则化。规则化经常被用来抑制模型训练时特征数过大导致的过拟合(overfitting)问题;有时也作为Lasso回归和Ridge回归的构建模块;
- tf.contrib.layers.initializers模块:tf.contrib.layers.initializers一般用来做模型初始化。包括深度学习在内的许多算法都要求计算梯度来优化模型。随机初始化模型参数有助于在参数空间中找到最优参数解。TensorFlow提供的有Xavier初始化器,用来在所有层中保持梯度大体相同;
- tf.contrib.layers.feature_column模块:tf.contrib.layers.feature_column提供函数(比如,bucketing/binning,crossing/compostion,和embedding)来转换连续特征和离散特征;
- tf.contrib.layers.embedding模块:tf.contrib.layers.embedding转化高维分类特征成低维、密集实数值向量。
损失函数(Loss Function)和Metric
- tf.contrib.losses模块:机器学习算法优化依赖于损失函数。TensorFlow在tf.contrib.losses模块中提供大量的损失函数以供选择,比如,Sigmoid 交叉熵损失函数(sigmoid cross entropy)和Softmax(softmax cross entropy),Log损失函数,Hinge损失函数等;
- tf.contrib.metrics模块:tf.contrib.metrics中提供了各种Metric,比如,precision,recall,accuracy, auc,MSE等。
其它
前面作者仅仅抛砖引玉地给出TensorFlow的contrib模块中重要的内容。其它更重要的函数,比如,DataFrame和Monitors可参考以前的文章。
参考
[1] http://terrytangyuan.github.io/2016/08/06/tensorflow-not-just-deep-learning
侠天,专注于大数据、机器学习和数学相关的内容,并有个人公众号:bigdata_ny分享相关技术文章。
若发现以上文章有任何不妥,请联系我。