0%

深度学习入门概要

人工智能的未来世界令人神往。当我看到媒体上各种神乎其神的报道,作为一名咸鱼程序员时不时有这样的冲动: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最新论文是必要的。

小结

后续会按照本文的概要,详细介绍一下深度学习的各个方面。主要基于Udacity的深度学习课程,记录我学习中遇到的一些问题。深度学习是一门十分大的学问,入门不易,想要深入更需要大量时间与实践,本人只是接触几个月,说是完全入门都不敢,写作的目的一窥深度学习的神秘面纱,同时把疑惑与问题总结一下,与大家共勉。我对深度学习的认识还浮于表面,比较粗浅,行文中难免有错误,望不吝指出。

欢迎关注我的其它发布渠道