课程简介
本课程共分为三个部分:基础理论、深度神经网络基本结构以及网络优化与实践。本课程采用了理论结合实践的讲解方式,方便读者边学边练,理解巩固。在解释相关概念时,作者尽力使用简单、直观、可实现的公式语言描述,尽量避免使用图形、比喻和白话等容易使初学者误入歧途的描述方式。读者在初学过程中可能会不太习惯,但这对于建立知识体系是十分重要的。
课程实践部分使用 TensorFlow 作为机器学习库,以帮助读者快速实现一些深度学习算法,从而建立信心,这种自信是任何学习过程都需要的。但机器学习库只是辅助,作者希望读者在学完本课程后,能够利用数学公式而非库函数的方式实现深度学习功能。这很难,但并不是不可能。
作者介绍
如是,算法工程师。主要从事数值模拟、智能算法研发工作。擅长高性能计算、物理、机器学习领域。曾参与设计自然灾害智能监控预报系统。
课程内容
导读:课程介绍和学习方法
无人工不智能
经常会被问到“深度学习与机器学习或者数据挖掘有什么关系?”答案很简单:没有区别。现如今,人工智能如此火爆,好像其他机器学习算法已经没有了立足之地。但事实并非如此,每一种机器学习算法都具备完成所有机器学习任务的潜力,只是需要很复杂的特征工程。深度学习以及其他所有的机器学习算法本质上都是一种“拟合”机制,在大量的数据基础之上总结出可用的规律。而这些数据是需要人来提供的,所以说机器学习过程就是让机器学习人类经验的过程。而这个过程与数据有关,与方法无关。
解决深度学习问题有两种思路。一种思路是基于理论的,或者说基于规则;第二种是基于数据的,从数据中学习规则。举个例子,对于图像去噪问题。我们可以通过傅里叶变换与低通滤波来减少图形噪声,这是基于理论的而且不需要提供数据。另外,还可以给定有噪声和没有噪声的图像,让机器自动去学习一个可用于降噪的系统。下图是Zhang在2017年使用深度神经网络完成的图像去噪工作(文献[1])。
所有的机器学习都依赖于有效数据的累积,这离不开人工。“无人工不智能”的另外一层意思是很多工作其实并不适合使用“机器学习算法”去完成,比如寻找两点之间的最短路径,这是传统算法的范畴。作为一个“算法”工程师,眼光不应该局限于机器学习的领域。我们最终的目标是准确、高效地解决问题,因而不必纠结于使用哪种方法。
为什么需要深度学习
很多年前机器学习很强调“做特征”。但是随着数据的不断累积,有了另外一种选择,就是构建一个足够复杂的可训练系统,让系统自身去完成特征的学习过程。深度学习就可以完成上述过程,它简化了特征工程的难度。
传统的机器学习建模方式所得的曲面(线)复杂度不足,无法用来拟合数据。
传统机器学习算法由于可训练参数数量的限制,导致它所能学到的特征有限,在一些情况下可能无法形成足够复杂的曲面,因此它十分依赖特征工程去增加复杂度。而深度学习可以形成足够复杂的曲面用于拟合特征,换一种说法就是深度神经网络具有强大的表达能力。这种特征的习得是以海量数据为基础的。因此在数据量较少时使用深度学习很难得到理想的结果。
深度学习能做什么
机器学习能完成的任务,深度学习都可以完成。深度学习尤其擅长处理图像识别、物体检测、自然语言翻译、语音识别和趋势预测等,这些任务本身比较复杂,需要一个相对复杂的系统去完成拟合任务,在这里就不展示了。下面列举深度学习在其他方面的应用:
谷歌的 Magenta 项目是深度学习在音乐以及艺术上的一些探索。目前利用深度学习已经完成了一些简单的音乐和漫画创造工作。下面是 Magenta 项目中画漫画的例子:
深度神经网络还可以完成图像风格迁移的任务:
同样,使用神经网络可以完成图像的超分辨率采样等任务:
上图是利用 Keras-js 官网的预训练模型进行超分辨采样,左侧是使用二次样条插值得到的

















