8 个很棒的机器学习小抄,速查表及其解释: Machine Learning Cheat Sheets !

这期David 9给各位初学者推荐8个很棒的机器学习小抄,速查表以及我的理解,希望各位刚入坑的小伙伴能有一个总览性的理解,加速你的学习迭代:

1.  SCIKIT-LEARN 算法导览

分类只要判别类别标签,回归还要预测具体值,特征降维要找到有用的那些维度,聚类是要给未知总集区分类别,初学者除了知道以上这些问题大类, SCIKIT-LEARN 算法导览还提供一些具体的选择细节。 继续阅读8 个很棒的机器学习小抄,速查表及其解释: Machine Learning Cheat Sheets !

TensorFlow手把手入门之分布式TensorFlow — 3个关键点,把你的TensorFlow代码重构为分布式!

分布式架构就像哈姆雷特,一千个人眼中有一千种分布式方式 — David 9

对于机器学习模型,分布式大致分两类:模型分布式数据分布式:

模型分布式非常复杂和灵活, 它把整个机器学习模型分割,分散在多个节点上,在每个节点上计算模型的各个部分, 最后把结果拼接起来。如果你造了一个并行性很高的深度网络,比如这个,那就更棒了。你只要在每个节点上,计算不同的层,最后把各个层的异步结果通过较为精妙的方式汇总起来。

而我们今天要手把手教大家的是数据分布式。模型把数据拷贝到多个节点上, 每次算Epoch迭代的时候,每个节点对于一个batch的梯度都会有一个计算值,一个batch结束后,所有节点把梯度值汇总起来(ps参数服务器的任务就是汇总所有参数更新),从而进行更新。这就会导致每个batch的计算都比非分布式方法精准。相对非分布式,并行方法下,同样的迭代次数,收敛较快。 继续阅读TensorFlow手把手入门之分布式TensorFlow — 3个关键点,把你的TensorFlow代码重构为分布式!

用TensorFlow可视化卷积层的方法

深度学习中对于卷积层的可视化可以帮助理解卷积层的工作原理与训练状态,然而卷积层可视化的方法不只一种。最简单的方法即直接输出卷积核和卷积后的filter通道,成为图片。然而也有一些方法试图通过反卷积(转置卷积)了解卷积层究竟看到了什么。

在TensorFlow中,即使是最简单的直接输出卷积层的方法,网上的讲解也参差不齐,David 9 今天要把可运行的方法告诉大家,以免大家受到误导。

废话少说,最简单的方法在此:

如果你有一个卷积层,我们以Tensorflow自带的cifar-10训练为例子:

with tf.variable_scope('conv1') as scope:
  kernel = _variable_with_weight_decay('weights',
                                       shape=[5, 5, 3, 64],
                                       stddev=5e-2,
                                       wd=0.0)
  conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
  biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
  pre_activation = tf.nn.bias_add(conv, biases)
  conv1 = tf.nn.relu(pre_activation, name=scope.name)
  _activation_summary(conv1)

继续阅读用TensorFlow可视化卷积层的方法

用Keras训练一个准确率90%+的Cifar-10预测模型

第五届ICLR(ICLR2017)最近被炒的厉害,David 9回顾去年著名论文All you need is a good init,当时提出了一种新型初始化权重的方法,号称在Cifar-10上达到94.16%的精度,碰巧最近在看Keras。

好!那就用Keras来还原一下这个Trick。效果果然不错,没怎么调参,差不多200个epoch,testing准确率就徘徊在90%了,training准确率到了94%:

测试准确率
测试准确率

继续阅读用Keras训练一个准确率90%+的Cifar-10预测模型

MSRA微软亚洲研究院 最新卷积网络: Deformable Convolutional Networks(可变形卷积网络)

抽样方法的改进似乎像人类进化一样永无休止 — David 9

CVPR 2017机器视觉顶会今年6月21号才举办,但是2016年11月就投稿截止了。微软每年都是CVPR大户,今天我们要讲解的就是MSRA微软亚洲研究院的最新投稿论文:Deformable Convolutional Networks。(很可能被收录哦~)我们暂且翻译为:可变形卷积网络

这是一种对传统方块卷积的改进核。本质是一种抽样改进。

谈到抽样,人脑好像天生知道如何抽样获得有用特征,而现代机器学习就像婴儿一样蹒跚学步。我们学会用cnn自动提取有用特征,却不知用什么样的卷积才是最有效的。我们习惯于方块卷积核窗口,而Jifeng Dai的work认为方块不是最好的形状:

来自:https://arxiv.org/pdf/1703.06211.pdf
来自:https://arxiv.org/pdf/1703.06211.pdf

如果能让网络自己学习卷积窗口形状,是不是一件很美好的事情? 继续阅读MSRA微软亚洲研究院 最新卷积网络: Deformable Convolutional Networks(可变形卷积网络)

Yoshua Bengio大神深度学习实战方法论解读 — 模型评估, 超参数调优,网格搜索,调试策略

人类擅长把一个问题转化为另一个问题,而深度学习试图把所有问题转化为同一个问题 — David 9

现代深度学习或机器学习,很大程度上是把所有问题转化为同一个“模型训练”问题。如何解决这个模型训练的问题成为了数据科学家们的主攻问题。

鲜为人知的是,设计机器学习模型、训练算法和目标函数仅仅是工作的一部分。还有很重要的一部分是:数据科学家们要对数据和问题有更深层次的理解,对于模型评估超参数调优网格搜索调试策略都有相当的实践经验。

正如Deep Learning(Ian Goodfellow Yoshua Bengio)一书中所说:

Correct application of an algorithm depends on mastering some fairly simple methodology

继续阅读Yoshua Bengio大神深度学习实战方法论解读 — 模型评估, 超参数调优,网格搜索,调试策略

DeepMind新型神经网络:可异步训练的深度网络!— “解耦神经网络” 与 “合成梯度”

如果深度学习不是神经网络的终点, 那么神经网络会跟随人类进化多久? — David 9

自3年前Google收购DeepMind,这家来自英国伦敦的人工智能公司就一直站在神经网络与深度学习创新的风口浪尖(AlphaGoDeepMind Health)。

今天要介绍的“解耦神经网络接口”(Decoupled Neural Interfaces)的异步网络就是出自DeepMind之手。这篇2016发表的论文试图打破传统的前向传播和后向传播按部就班的训练过程。在传统神经网络, 整个过程是非异步的更新,更新也是逐层紧耦合的(图b):

截自:https://arxiv.org/pdf/1608.05343.pdf
截自论文“Decoupled Neural Interfaces using Synthetic Gradients“:https://arxiv.org/pdf/1608.05343.pdf

图(b)是传统普通前馈反馈神经网络(黑色是前馈箭头绿色是反馈箭头),f层到fi+1 层的权重矩阵由fi+1层的偏导反馈δ更新, 众所周知,反馈δi 必须等到后向反馈从输出层传递到fi+1 层后才能计算出。

为了试图解除这种“锁”(强耦合)(图(c)(d)),在(c)图中我们注意到在f层和fi+1 层之间,引入了模型Mi+1(图中菱形),又称人工“合成梯度”模型,用来模拟当前需要的梯度反馈更新。 继续阅读DeepMind新型神经网络:可异步训练的深度网络!— “解耦神经网络” 与 “合成梯度”