人工智能的未来世界令人神往。当我看到媒体上各种神乎其神的报道,作为一名咸鱼程序员时不时有这样的冲动:What the fuck it is?与此同时,与『人工智能』这个热点伴随出现的是『深度学习』、『机器学习』这些不明觉厉的玩意。甚至在圈内交流(chuiniubi)的时候言必谈XX学习。为了可以跟上时代的脚步,储备知识能力(可以一起chui),今年我又一次开始入门机器学习/深度学习之旅。本文是我最近学习内容的概括。
前传
这是或许是我第N次试图入门机器学习。大约三年前,当我试图打开这扇大门时,发现找到一份能看懂的资料十分困难。于是,我潜心搜索入门资料,当时最火的入门资料是Andrew Ng的视频:斯坦福机器学习课程。 这门课现在依旧是很多人的入门首选,可是当课程讲到反向传播推导各种微积分的时候,我没能坚持下来。我更习惯从书本学习入门知识,便开始寻找一本最基础的入门的书籍。皇天不负有心人,终于在国外一个热门的机器学习入门帖子中发现了一本好书《集体智慧编程》(Programming Collective Intelligence),如获至宝。全书使用Python作为开发语言,讲解了机器学习的基本概念,没有数学公式,侧重实践与代码。可惜的是,这本书也因为一些自身原因半途而废了。
PS:那个帖子的作者是Jason Brownlee,一个国外出名的机器学习传道者。他的这篇帖子的2017年的相关更新Machine Learning Books ,在国内有很多媒体转载翻译,总结了一下比较流行的机器学习相关书籍。
似乎我的机器学习之旅就此结束了。然而近年来人工智能大火,更重要的是工作上又与这些东西产生了诸多交集,我想是时候也有必要再次开始新的学习了。正当我准备重新拿起那本落灰的《集体智慧编程》之时,在Twitter上候偶然发现阮一峰老师推荐了一门Udacity在线收费课程《深度学习》。心想借此机会,体验一下这种新式的教育模式,同时也给自己一点压力把这事搞定。于是,在2017新年前报名了这门课程。(PS:当时连深度学习是什么都不知道😂,以为是机器学习的时髦名字)
经过4个月的学习,基本了解了什么是深度学习,它的基本原理,具有哪些能力与应用以及最新的一些成果。同时,完成了几个实践项目。虽然这些都很初级😂,但是,总的而言让我入门了这领域,并且知道下一步如何走,也算是对技术去魅的过程。
概要
我从深度学习在计算机科学中的地位,深度学习的具体内容与知识,以及深度学习入门之后如何深入的角度来谈一下我的认识。
在哪里?
深度学习是什么,他与机器学习,人工智能是什么关系?这是首要需要解决的问题。最基本的答案是:人工智能>机器学习>深度学习,后者是前者的子集。
- 人工智能:分为强人工智能与弱人工智能。『智能』本身就很难定义,我们可以这样简单地认为:当前所有的所谓智能算法都是弱人工智能。因为,强人工智能的实现包括且不限于推理、自我意识等等这些暂时无法解决的问题。实现弱人工智能的方法有很多,机器学习是其中之一。
- 符号逻辑(规则引擎、专家系统和知识图谱)
- 进化算法
- 贝叶斯统计
- 机器学习
- 机器学习:机器学习是现在人工智能的主要研究方向。机器学习从学习样本的特点来分类可以分为监督学习(有标注),无监督学习(无标注),半监督(部分标注),强化学习(没有样本)。在实现算法上有:
- 神经网络:机器学习算法的一种。
- 深度学习:对机器学习中神经网络算法的优化与发展。近年来计算性能(GPU)的快速提升,互联网大量数据的产生,使得深度学习成为可能。同时,使用深度学习算法在诸多任务中均取得了耀眼的成绩(图像识别,自然语言处理),使它成为最火热的研究方向。
因此,学习深度学习,必须先了解机器学习中的人工神经网络(神经元,感知器等)。我们通过这一步步引出近些年快速发展的深度学习,这是课程学习的主要内容。
参考文章:人工智能、机器学习与深度学习
学习内容
深度学习入门主要分为下面几个部分
开发环境与工具
- Conda:Python环境管理工具
- Jupyter Notebook:python开发笔记本,记录数据科学过程
- Python3:基本语言,课程基本使用Python3实现代码
- 开发使用的python库
- 基础库
- numpy
- scipy
- 机器学习库
- TensorFlow 重点
- sklearn
- 其他备用库
- keras
- 基础库
神经网络/深度神经网络DNN
- 初次接触:了解深度学习的应用与常见的github项目举例
- 机器学习的基本模型
- 回归模型—线性回归&&逻辑回归
- 感知器:
- 神经网络入门:梯度下降&&BP
- project:手动编写神经网络
- 模型评估与验证
- 神经网络进阶
- 神经网络简单应用:初级情感分析
- 神经网络相关的开发库
- TFLearn
- TensorFlow
- 原理:MiniFlow
- 入门与API应用
- 使用AWS/FloydHub在云端训练神经网络
- 深度神经网络
- 简介
- 在TensorFlow中实现
- 正则化
卷积神经网络CNN
- CNN简介与原理
- 卷积
- filter
- featuremap
- weight sharing
- 设置卷积参数
- 卷积
- CNN可视化
- 1*1 卷积 && inception
- pool池化技术
- 在TensorFlow中实现
- project: CIFAR-10 数据集 图像分类
循环神经网络RNN
- RNN入门&&LSTM
- Character-Wise RNN 讲解
- Embeding&& Word2Vec:Skip-gram
- 神经网络的Debug:TensorBoard
- 高级情感分析:使用RNN进行情绪预测(N to 1的RNN)
- project:使用RNN生成剧本()
- seq2seq:翻译模型(N to N的RNN)
- project:法语与英语的翻译
对抗生成网络GAN
- 生成对抗网络简介:使用MNIST数据模拟生成手写数字
- 应用&&思想(博弈论)
- 入门
- Generator
- Discriminator
- 构建网络(无卷积&&单层网络)
- 训练
- 改进:批归一化
- 深度卷积GAN:使用SVHN数据起生成门牌号
- DCGAN架构介绍(在简单GAN中加入多层与卷积/反卷积)
- 批归一化
- 构建与训练
- 应用:如何在半监督学习中应用
- project:使用GAN生成人脸
其他
- 迁移学习(第三章12课):使用现成模型
- 强化学习(第三章16课):Q-learning算法,实现游戏agent
- 自动编码器(第三章最后一课,第四章应用了该思想)
- 简单自动编码器
- 卷积自动编码器
- 解决生成图像网格化问题
- 如何设置合理的HyperParameter
- 半监督学习(新)
- siraj课程
- 神经网络
- 情感分析
- 数学
- 数据准备
- 图像分类
- 股票预测
- 艺术风格迁移学习
- 音乐生成
- 文本生成
- 语言翻译
- 聊天机器人
- 强化学习
- 图像生成
- 视频生成
- 在小样本上学习
去哪儿?
在知识宽度上,虽然深度学习在大部分任务中表现十分出色,但是机器学习中的其他算法依旧有很广泛的应用(如SVM等),可以学习这些内容:
- 《集体智慧编程》:比较老,一些传统的机器学习方法
- 《统计学习基础:数据挖掘、推理与预测》:比较学术理论一些
在知识深度上,系统学习一下TextBook了解数学原理。了解最佳的应用实践。深度学习的在快速发展,各个子领域都有很多新的进展,专注某些领域,follow最新论文是必要的。
- CS231n:Convolutional Neural Networks for Visual Recognition:视觉方向深入的好教程
- Deep Learning Book&&PDF版本:MIT的DeepLearning教程
小结
后续会按照本文的概要,详细介绍一下深度学习的各个方面。主要基于Udacity的深度学习课程,记录我学习中遇到的一些问题。深度学习是一门十分大的学问,入门不易,想要深入更需要大量时间与实践,本人只是接触几个月,说是完全入门都不敢,写作的目的一窥深度学习的神秘面纱,同时把疑惑与问题总结一下,与大家共勉。我对深度学习的认识还浮于表面,比较粗浅,行文中难免有错误,望不吝指出。