说说我学习深度学习的经历吧,从开始学习到现在大概有4个月,只能算新手,刚好可以回答新手问题。
先说编程:自认会用C++, 熟悉Python
英语水平:中等,能很快读懂英文科学文献
最开始对人工智能/深度学习感兴趣是因为想用它试一试自然语言生成,后来想到一个物理方面的题目,预计可以用深度学习技术解决,开始接触深度神经网络。记录一下学习历程,
1. 安装 Tensorflow(google 开源的深度学习程序), 尝试里面最简单的例子MNIST 获得激励。
2. 之后尝试通过读书(看视频)理解最简单的全连接神经网络
先搜索找到答案:为什么要Go Deep?
(1)神经网络中输入层,隐藏层,输出层之间矩阵乘积的维度变化。
(2)Weight, Bias 这些是什么,改变它们有什么结果。
(3)激励函数是什么,有什么作用,有哪些常用的激励函数
(4)误差如何向后传递,网络如何通过最小化误差函数更新,有哪些常用的优化方法
以上这些在一本交互式电子书中可以找到答案:
Neural networks and deep learning
(5) 如何对权重正规化,L1, L2, BatchNormalization, (这些在以后真正应用的时候再看)
Deep Learning chapter 7 for L1, L2 regulation.
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift (2015) original paper for BN
why does batch normalization help? Quora
Note for BN in Chinese
Implementing Batch Normalization in Tensorflow from R2RT
Layer normalization (2016) Replace Batch Normalization in RNN
Why Does Unsupervised Pre-training Help Deep Learning?
Summary and discussion on pre training
3. 选择一种比较比较底层的神经网络开源库,tensorflow 或 theano,
(1) 读官方文档 https://www.tensorflow.org/versions/r0.11/tutorials/index.html
(2) 看周莫凡的网络教程 https://www.youtube.com/user/MorvanZhou
(3) 重复敲代码,重复实现例子程序
4. 开始理解各种不同神经网络架构所能处理的问题
(1) CNN 图像识别,图像处理,语音处理
(2)RNN,LSTM 自然语言理解与生成
(3)增强学习,玩游戏 :)
5. 尝试各种开源的有意思的神经网络项目,新手可以从下面这个列表开始
(1)Andrej Karpathy blog char-rnn, Deep Reinforcement Learning: Pong from Pixels
(2)Neural Style In tensorflow.
6. 如果能翻墙,注册 twitter, facebook 账号,follow 那些文章中经常出现的大牛的名字。他们每天提供很多新动向及最新技术,很多时候有很 Fancy的应用。试试从这个大牛follow的人开始follow:twitter.com/karpathy
当你对这些都很熟悉的时候,开始阅读艰深的文献:
1. CNN 的原始文献
2. RNN 和 LSTM 的原始文献
3. Reinforcement Learning 的原始文献
4. Google DeepMind 发表在 Nature 上的几篇经典
最后推荐一个高级点的库: Keras Documentation
虽然这个库还在发展阶段,里面仍有不少bug,但前途不可限量,可以很容易实现你之前读文章时候见到的那些复杂的构架。作为例子,这里有个教程:
Deep learning book in ipython-notebook and Keras Many example code in Keras.
这些学习历程中遇到的资料都记录在了我的个人note里,希望大家共勉:web-docs.gsi.de/~lpang/
最后强调一个最最重要的事情:要有自己的想法,有将这种新技术用到自己项目中的强烈愿望,从开始就要Coding,不断尝试才能不断进步。
(看了很多其他的回答,在这里想补充一段)
说实话,作为一个其他行业(物理,工程,化学,医学,农业,卫星地图识别,网络安全领域,社会科学)的普通程序员,在本行业有比较深的理论和实验背景,能接触到海量数据(无论是传感器数据,互联网数据还是蒙特卡洛模拟数据),想做处一些创新性,交叉性的工作,这一轮人工智能的风绝对是要跟的。
作为一个计算机专业的人,可能觉得机器学习,人工智能,深度学习已经炒的过热了。但是对于其他领域,可能大部分人还没有想到把最基本的机器学习算法如:PCA,SVM,k-means...运用到本行业积累的大数据上, 更不要说最近的深度学习。
作为其他行业的普通程序员(除了数学与理论物理),我们不要指望从理论上彻底解决深度学习现存的问题。我们的优势不在这里,我们的优势是计算机专业的人所没有的专业知识,行业大数据。我们需要做的是把机器学习,深度神经网络当作工具,知道它们能做什么,如何去做。参考Andrew Ng 的机器学习笔记,
Machine Learning - complete course notes
举几个简单的例子:
1. 使用深度学习中生成风格化图片的技术,制备具有特定功能的抗癌药物
The cornucopia of meaningful leads: Applying deep adversarial autoencoders for new molecule development in oncology
2.使用反常探测,寻找网络攻击 Cyber-attacks prediction
3. 对于国家来说,更加聪明的互联网关键词过滤
4. 自动探测卫星地图上道路,建筑,车辆,河流。。。
5. 环境科学中寻找雾霾与众多可能因素的非线性关联
我们用卷积神经网络来区分量子色动力学相变是crossover还是一阶相变。(1年之后回来修改)回答这个问题的时候,文章刚刚写好,最近文章已经在《自然-通讯》Nature Communications 杂志发表,网上公开链接是 An equation-of-state-meter of quantum chromodynamics transition from deep learning , 希望能给坚持在这个方向,做 AI + X 交叉学科应用的同学带来精神上的激励。
|