学习深度学习是否要先学习机器学习?
有小伙伴问我,最近做毕设要做一个神经网络的课题,想请教一下需不需要把机器学习也都学习一遍?
永远正确的回答是:建议先学机器学习,再学深度学习。
上面那句你从哪都挑不出毛病,毕竟机器学习是深度学习的基础。基于这个思路,然后你在某个时间点发现机器学习竟然是人工智能的一个分支,然后这个问题要成了“学习深度学习是否要先学习人工智能再学习机器学习?”
基本上这样,等你毕业了,也还没学到深度学习。
学不完,根本学不完...
所以,从哪都挑不出毛病,除了脱离实际。
毕设要做一个神经网络的课题”,本科毕设的话会有两种搞法:
第一种是做的东西只需要利用现成的包,你只需要知道这个包是干啥的,然后知道怎么用就 ok 了,俗称的调包侠。
第二种是做的东西现成的不能满足,需要对源码进行修改达到自己想要的效果,俗称大佬。
大多数本科同学在做毕设的时候绝大多数都是第一种情况,题主大概也可以划分在这一类,毕竟开始搞毕设了还没开始学深度学习。
第二种除非天赋异禀,不然半年一年的别说搞出来了,你能学完理论知识开始动手琢磨源码都算你进度快。
深度学习作为机器学习的特定分支,它们两者在一些知识点上是共通的。
只是利用现成的东西来快速做个毕设对于学习的要求性不是很高。可以直接从深度学习开始学,对于学习过程中碰到的懵懂知识点可以再去机器学习中找一下,毕竟在深度学习的教材中对于机器学习中出现的概念它是默认你知道的。
好处是你直接开始学了深度学习,坏处是你学习进度会稍微慢一点,碰到不懂的知识点回头再去学容易打乱学习节奏,而且你还不一定知道去哪里能找到,不知道你们怎么想,反正我是对这种情况“深恶痛绝”。
所以我的建议是:
去查一下深度学习需要的前置知识有哪些,花少量的时间快速去学一下,不必太精通,至少有个印象,然后再花大把的时间去专攻毕设的深度学习方向。那下面就展开讲讲。
一、前置知识
这里的前置知识都是为了后续能快速学习深度学习服务,主要就是三部分:
• 机器学习基础概念
• 数学基础
• 编程基础
这三部分看着挺唬人,其实只需要学习需要的内容,如果你的时间稍微宽裕一点,可以花一个半月左右的时间,如果时间紧,那就压在一个月以内一鼓作气的搞定。
机器学习基础概念
机器学习是为了帮助计算机能像人类思考所研究出的计算机理论,你可以把它理解成“通过训练数据和算法模型让机器具有人工智能”的方法,这些方法,在程序里我们称之为算法。
训练数据在一定程度上决定了机器学习的学习方式,机器学习中主要有四种学习方式:
• 监督学习
监督学习是利用带着打好标签的数据去学习的方式。就比如我给计算机一些动物的图片,然后告诉计算机哪个是老虎,哪个是狮子,计算机根据我给出的“图片和答案的特征”去学习“老虎为什么是老虎,狮子为什么是狮子”。
监督学习常见的是分类算法:包括决策树、朴素贝叶斯、SVM、k近邻算法、AdaBoost;回归算法:线性回归,逻辑回归。
回归算法可以作为神经网络的输出层,在深度学习中用的还是比较多的。
• 非监督学习
非监督学习是利用无标签的数据去学习的方式。
同样是我给计算机一些动物的图片,但是我不告诉它狮子什么样,老虎什么样,我让计算机自己去判断总结不同动物的不同之处,以此来完成不同动物的分类。
非监督学习典型的就是聚类算法,比如 K-Means、最大期望算法 EM。
在深度学习中 K-Means 之于 K-Means 模型可以对神经网络的隐藏层进行聚类和分组。
• 半监督学习
半监督学习介于“监督学习”和“非监督学习”之间。
我还是给计算机一些动物的照片,有的图片我告诉计算机哪个是狮子,哪个是老虎,有的图片我就不告诉你谁是谁。
它是我们更常见的一种学习方式,因为现实是数据会因为各种原因标记丢失。
• 强化学习
强化学习是利用奖励和惩罚信号来训练代理程序,获得学习信号。它的主要目标是设计智能体,让它能和环境进行互动,通过不断的试错和反馈学习最优策略,实现特定的任务。
简单讲就是,我把计算机丢到一个陌生的环境中,它自己去尝试各种手段让自己成功的适应这个环境。
上面这些的最低要求是要知道这些学习方式都是什么东西,有哪些算法,可以挑一些常见的在深度学习中可以用到的算法学一下,不需要学的特别深。
数学基础
数学的话得看,不然涉及到的公式以及推导你可能都看不懂。
不需要看特别复杂的,就看线性代数,概率论与数理统计,高数中的微积分就好了,这都是大学学过的课程,甚至都不用再去买书。
深度学习中涉及很多的矩阵运算,所以线性代数很重要,重点看向量、矩阵、矩阵乘法、逆矩阵、特征向量、特征值这些。
深度学习中很多算法,比如高斯分布、最大似然估计这些,涉及到的都是概率论与数理统计中的内容。对于深度学习中像梯度下降、随机梯度下降,需要用到微积分的内容,主要是求函数极值或者分析函数性质,重点在偏微分。
编程基础
这个主要就看 Python 就好了。
算起来,Python 在机器学习和数据科学领域广泛应用也超过 20 年了,在这个过程中,各种配套的适合第三方库和工具都衍生出来,像 Numpy、Pandas、Matplotlib、Scikit-learn等这些提供了各种数据结构以及数据可视化的工具。
深度学习的两个主流框架 Pytorch和 TensorFlow,也都是支持 Python 开发的。
Python 的语法简洁,入门很简单,这里你不用学的多么精通,把基础语法学会就 ok,两个星期以内学完,不是不可能完成的目标。
二、深度学习
深度学习是机器学习的一个研究方向,它使用神经网络模拟人类大脑的工作方式,机器想要蜕变成人工智能,深度学习是必经之路。
深度学习的内容很多,主要在计算机视觉、语音识别、自然语言处等方面应用较多。
大家没必要每个方向都去研究,没那个必要也没那个时间,就针对自己的研究方向去花时间专攻就好了。
计算机视觉
计算机视觉主要是用于图像分类、人脸识别、目标检测、语义分割等方面,应用的主要是在安防监控、医学影像诊断等方面。
如果你是这个方向,那你去看:
• CNN 卷积神经网络,可以对图像进行分类、目标检测;
• RNN 循环神经网络,主要用于处理序列数据,对视频方面的识别;
• GAN 生成对抗网络,它可以生成逼真的图像,像我们看到的老照片的修复,还有图像图像合成;
语音识别
语音识别,顾名思义,主要就是语音识别、语音翻译、语音合成这些,像智能客服、智能家居这些就涉及到语音识别的应用。
如果你是这个方向,那你去看:
• CNN 卷积神经网络,可以对频谱图像进行分类,转化音频信号;
• RNN 循环神经网络,对语音信号等序列数据进行建模;
• LSTM 长短时记忆网络,主要应用在语音识别方面;
自然语言处理
自然语言处理主要用于情感分析、文本分类、机器翻译、语言生成等方面,主要在搜索引擎、语言翻译、智能客服、问答系统等应用上。
如果你是这个方向,你可以去看:
• CNN 卷积神经网络,可以进行情感分析、文本分类等;
• RNN 循环神经网络,可以用在自然语言建模、词性标注等方面;
• LSTM 长短时记忆网络,可以用在文本分类、机器翻译等方面;
• AM 注意力机制,可以用在机器翻译、问答系统等方面;
深度学习的发展是很快的,各种前沿的知识更新的很快,对于深度学习来说,看前沿论文是必不可少的。
写在最后
能想到的内容就先这些,希望大家都能静下心来好好去学习。
不管你后面是不是真的想要从事机器学习或者深度学习这方面,我都希望你能有时间去学习的时候,多多的了解一下 AI 技术 ,还是那句话,时间紧的情况下,怎么快速的为目标服务是最重要的,先学对自己有用自己需要的内容。需要AI学习资料包的时候可以找下面小助手无偿获取