机器学习/深度学习常用库的配置及其适用的算法总结

机器学习、深度学习相关配置须知及其适用算法的总结


常识

传统机器学习框架和深度学习框架之间有区别。本质上,机器学习框架涵盖用于分类,回归,聚类,异常检测和数据准备的各种学习方法,并且其可以或可以不包括神经网络方法。深度学习或深度神经网络(DNN)框架涵盖具有许多隐藏层的各种神经网络拓扑。这些层包括模式识别的多步骤过程。网络中的层越多,可以提取用于聚类和分类的特征越复杂。

按照各类框架主要实现的算法的性质,我们可将这些框架(库)分为几大阵营:

  • Caffe,CNTK,DeepLearning4j,Keras,MXNet和TensorFlow等是深度学习框架(库)。
  • Scikit-learn和Spark MLlib是机器学习框架(库)。
  • Theano跨越了这两个类别。

配置的常识

  • 一般来说,深层神经网络计算在GPU(特别是Nvidia CUDA通用GPU,大多数框架)上运行的速度要比CPU快一个数量级。
  • 一般来说,更简单的机器学习方法不需要GPU的加速。

虽然可以在一个或多个CPU上训练DNN,训练往往是缓慢的,慢不是说秒或分钟。需要训练的神经元和层数越多,可用于训练的数据越多,需要的时间就越长。
举个例子:

当Google Brain小组在2016年针对新版Google翻译训练语言翻译模型时,他们在多个GPU上同时运行了一周的训练时间。没有GPU,每个模型训练实验将需要几个月。

这些框架中每一个框架具有至少一个显著特征。 Caffe的强项是用于图像识别的卷积DNN。 MXNet具有良好的可扩展性,可用于多GPU和多机器配置的训练。 Scikit-learn具有广泛的强大的机器学习方法,易学易用。 Spark MLlib与Hadoop集成,具有良好的机器学习可伸缩性。 TensorFlow为其网络图TensorBoard提供了一个独特的诊断工具。

另一方面,所有深度学习框架在GPU上的训练速度几乎相同。这是因为训练内循环在Nvidia CuDNN包中花费大部分时间。然而,每个框架采用一种不同的方法来描述神经网络,具有两个主要的阵营:

  • 使用图形描述文件的阵营
  • 通过执行代码来创建它们的描述的阵营。

考虑到这一点,让我们来看看各个算法和机器学习/深度学习框架的总结。

30个机器学习/深度学习算法总结

序号 算法名称 简称 所属类别 用途
1 卷积神经网络(Convolutional Neural Network) CNN 深度学习 常运用在图像和语音识别
2 递归神经网络(Recurrent Neural Network) RNN 机器学习 常用于NLP(自然语言识别)
3 长短期记忆神经网络(long-short term memory) LSTM RNN的其中一种形式 机器翻译、图像分析、文档摘要、语音识别、图像识别、预测疾病等
4 门控循环单元(Gated Recurrent Unit) GRU LSTM的改进 机器翻译、语音识别等
5 多层感知器(Multilayer Perceptron) MLP MLP是感知器的推广 常用于语音识别、图像识别、机器翻译等
6 生成对抗网络(Generative Adversarial Networks) GAN BP的推广 最常使用的地方就是图像生成,如超分辨率任务,语义分割等
7 受限波尔兹曼机(Restricted Boltzmann Machine) BM 机器学习 用于协同过滤,降维,分类,特征学习,主题建模以及搭建深度置信网络。
8 深度置信网络(Deep Belief Network) DBN 多层RBM 使用DBN识别特征,分类数据,还可以用来生成数据。
9 自编码器(AutoEncoder) AE 机器学习 主要用于数据可视化的数据降噪和降维
10 堆叠神经网络(Stacked Auto-Encoder) SAE 多层自编码器 降维,将复杂的输入数据转化成简单的高维特征
11 稀疏自编码器(Sparse AutoEncoder) SAE 自编码器的基础上加上L1的Regularity限制 一般用来学习特征,以便用于分类
12 降噪自编码器(Denoising AutoEncoder) DAE 自编码器的扩展 可用于图像识别、图像复原
13 Hopfield网络(Hopfield Neural Network) HNN 反馈型神经网络 求解最优化问题、文本处理
14 自组织映射(Self-Organizing Map) SOM 神经网络 用于数据降维、可视化以及聚类
15 径向基函数网络(Radial Basis Function Network) RBF network 前馈型神经网络 时间序列预测、模式分类、系统控制和非线性回归
16 脉冲神经网络(Spiking Neural Network) SNN 神经网络 用来学习生物神经系统的工作
17 极限学习机(Extreme learning Machine) ELM 前馈神经网络 可用于完成分类任务
18 反卷积网络(Deconvolutional Network) DN CNN的扩展 主要用于特征可视化
19 深度卷积逆向图网络(Deep Convolutional Inverse Graphics Network) DCIGN 变分自编码器(VAE) 可成功学习在3D渲染图像中表示姿态和光线的图形代码
20 回声状态网络(Echo State Network) ESN 属于RNN的范畴 动态模式分类,机器人控制,对象跟踪和运动目标检测,事件检测等
21 深度残差网络(Deep Residual Network) DRN 深度神经网络 图像分类,目标检测
22 支持向量机(Support Vector Machine) SVM 一种线性分类器 模式分类和非线性回归
23 神经图灵机Neural Turing Machine NTM 神经网络+记忆库 可用于自然语言处理
24 AlexNet AlexNet 其本质仍旧是CNN 目标检测
25 GoogLeNet GoogLeNet 深度神经网络 目标检测、图像识别

机器学习/深度学习常用框架(库)总结

序号 库名称 支持语言 硬件要求 基础依赖包 显著特征(强项) 适用算法 配置参考
1 scikit-learn python 不支持GPU加速 NumPy和SciPy 机器学习 支持向量机(SVM),最近邻,逻辑回归,随机森林,决策树 配置
2 Theano python 支持GPU计算 NumPy、SciPy、BLAS 速度与C媲美 机器学习和深度学习 配置
3 TensorFlow 主要python/c++,也支持Go/Java/Lua/Javascript/R 支持GPU加速 NumPy、SciPy等,CUDA和cuDNN 图像识别等 CNN、GAN、RNN、LSTM、AE等 配置
4 Keras python 支持GPU加速 基于Theano和TensorFlow 支持快速实验而生 CNN和RNN,或二者的结合 配置
5 Caffe C++、matlab、python 完美支持GPU 独立框架 图像处理 更支持CNN 配置 调用
6 Pytorch python 有一套很好的GPU运算体系 python基础包 计算机视觉,NLP CNN、RNN等 配置
7 Sonnet python 支持GPU加速 TensorFlow 搭建AI高级结构 LSTM、RNN、CNN等 配置
8 MXNet C++, Python, R, Scala, Julia, Matlab、JavaScript等语言 支持CPU加速 CUDA和cuDNN 图像识别、NLP情感分析 CNN、RNN 配置
9 CNTK C ++和Python 实现了跨多个gpu和服务器的自动分异和并行化 python基础包或Keras 语音识别领域 支持各种前馈网络,包括MLP、CNN、RNN、LSTM等 配置
10 Dlib C ++、python 支持GPU加速 cuda、cudnn 图像处理 SVM、聚类算法、数值算法等 配置

更多详细的库和算法的使用情况可以查看我们的思维导图

服务器配置建议

CPU

根据在所有的机器学习和深度学习的框架以及库中,大部分都只是支持GPU运算的,即使是可以CPU与GPU混用的,CPU的运行速度比GPU运行速度不只低一个数量级。GPU可以短时间运行结束的,CPU需要大量的时间来运行。

CPU在深度学习任务中,CPU并不负责主要任务,单显卡计算时只有一个核心达到100%负荷,所以CPU的核心数量和显卡数量一致即可,太多没有必要,但是处理PICE的带宽要到40.

建议CPU配置

  • Intel i7-7800X(内核数:6核;线程数:12;处理器基频:3.5GHz;最大睿频频率:4.00GHz;缓存:8.25MB L3)
  • Intel E5-2620 v3(内核数:6核;线程数:12;处理器基频:2.6GHz;最大睿频频率:3.2GHz;缓存:15MB SmartCache)
  • Intel i7-6850K(核心数:6核;线程数:12核;处理器基频:2.6GHz;最大睿频率频率:4.0GHz;缓存:15MB)

GPU

现在机器学习与深度学习最主要都是基于CUDA计算(CUDA是NVIDIA开发GPU并行计算环境),所以建议使用的GPU为NVIDIA公司的GPU

由于现在机器学习和深度学习的框架都只是支持单精度,所以双精度浮点计算时不必要的。并且,太高精度对于深度学习的错误率时没有提升的。

建议GPU配置:(建议GPU配置至少要有两个)

  • GeForce GTX1060(显存:6GB;内存带宽:216GB/s;处理器:1280个CUDA核心@1708核心MHz)(最低配置)
  • GeForce GTX1070(显存:8GB;内存带宽:256GB/s;处理器:1920个CUDA核心@1683核心MHz)
  • GeForce GTX1070Ti(显存:8GB;内存带宽:256GB/s;处理器:2432个CUDA核心@1683核心MHz)
  • GeForce Gtx1080(显存:8GB;内存带宽:320GB/s;处理器:2560个CUDA核心@1733核心MHz)
  • GeForce GTX1080Ti(显存:11GB;内存带宽:484GB/s;处理器:3585个CUDA核心@1582核心MHz)

DDR

  • 海盗船32G-DDR4
  • 金士顿骇客神条Fury系列DDR4 2400 32G(16GB*2)

硬盘

最主要是使用来存储数据,所以存储空间越大越好,至少是1T

SSD

  • Intel 600P系列 512G M.2
  • Intel 600P系列 1T M.2
  • 三星 960EVO 1TB M.2 NVMe

常用库的配置详情

scikit-learn

安装conda包

为什么要安装conda?

  • 1、用conda我们可以非常方便地安装python的各种package(e.g. numpy, scipy, ma
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值