因为相信,所以看见

0%

在机器学习中经常要对输入数据做一些预处理,最常见的就是 Normalization,其重要的作用就是可以加速网络的训练。但是,这个单词在中文中有两种意义截然不同的翻译,标准化和归一化。因此,这里记录一下标准化和归一化的区别:

标准化

标准化将数据转化为均值为 0,方差为 1 的数据
$$
X^{*} = \frac{X - EX}{\sqrt{DX}}
$$

归一化

归一化通常用来对数据进行无量纲化处理
$$
X^{*} = \frac{X}{X_{max} - X_{min}}
$$

Normalization 是如何加速网络训练的

TODO

随着机器学习和数据分析变得越来越热门,Python 作为一门解释型动态类型语言,很好的顺应了这一潮流,成为最流行的语言之一。 解释型语言的主要特点就是执行代码之前不需要编译,利用 Jupyter Notebook 等交互式的工具,可以方便快速的测试一些想法;而动态类型可以摆脱严格的继承关系或接口实现的束缚,简化程序的设计或实现。本文主要谈一下对动态类型的理解,以及类型提示的作用和重要性。

阅读全文 »

今天终于要正式开始构建机器学习框架了👏,在目前最为主流的神经网络框架中 TensorFlow 有 300 多万行代码,PyTorch 的代码量相对少一些但也有 80 多万行,显然以个人能力不可能构建出一个如此复杂的工程,甚至以笔者目前的工程能力和学术水平都不足以完成一个小型神经网络框架的设计与构建。因此,我选择了一个相对较小的神经网络框架 decaf (jing)(xing)(chao)(xi),该项目是贾扬清在 2013 年(7 月——9 月)完成的一个项目,最终版本代码量在 1 万行左右,根据 GitHub 上的项目简介,该项目是 Caffe 的前身,目标是实现一个高效而灵活的卷积神经网络框架。

阅读全文 »

昨天去上海参加了百度智能云举办的「原生赋能,云上创新」沙龙,对百度效率云运营总监金锐的「对工程能力无止境的追求」主题演讲感触最为深刻,深深觉得可以将这句话作为工作信条,贯穿整个职业生涯。其演讲中提到了百度内部的一些开发工具与开发流程,还提到了一些对工程师培养和考核的内容,并强调了陆齐还在百度时提出的对工程能力无止境的追求。回想之前也读过陆齐的这个演讲,也曾满腔热血,只是时间一久慢慢的有点忘却了,今天重新整理出来,算是对目前状态的一个鞭策。

阅读全文 »

本文主要内容参考自「动手学深度学习」中的正向传播、反向传播和计算图一节,略作修改。

在利用机器学习框架来实现模型时,我们只需要提供模型的正向传播(forward propagation)的计算,即如何根据输⼊计算模型输出,框架的自动求导模块会⾃动⽣成反向传播(back-propagation)计算中用到的梯度,我们不再需要根据链式法则去手动推倒梯度。可以说框架为我们提供的⾃动求梯度极⼤简化了深度学习模型训练算法的实现,降低了机器学习入门的门槛。

本文中我们将使⽤数学和计算图(computational graph)两个⽅式来描述一个带 $L_{2}$ 范数正则化的含单隐藏层的多层感知机模型的正向传播和反向传播,为接下来动手实现机器学习框架做好准备。

阅读全文 »