我想先用第一段话,以我亲身的经验,告诉大家,各种高大上的数学工具(最优化,进化算法,机器学习,深度学习,神经网络……)其实并不难。随着知识的积累,逐渐的深入,就会发现其实这些东西,都只是一个so simple的工具,其中涉及的算法核心思想文字也十分短。哪怕是菜鸟也 no need to “望洋兴叹”,所以这篇博文会很短,让你秒懂它们之间的关系。(本文篇幅有限,不做深入地专业探讨,只是为初学者做一个初级地图。)
一,最优化问题
最简单的就是min f1(x)。如果再加上约束条件,就是约束最优化问题,如果是多个目标函数就是多目标优化,如果目标函数是随时间变化的就是动态优化问题blabla……也就有了很多小的分支。求解最优化问题很难,比解方程难太多啦,所以伟大的数学家们就为我们提出了很多求解算法,有两种。1)传统的:比如牛顿法,梯度下降法等求解方法,但是这些传统求解方法一般要求目标函数是可微的或凸函数,这对于一些奇怪的实际问题显然很难满足。所以就有了后来,2)现代进化算法,比如遗传算法,粒子群算法,模拟退火算法等等,这也是在人工智能领域的兴起之后。模拟动物的行为去求解最优化算法。
二,机器学习和深度学习
机器学习最常干的事就是分类和聚类。它就是有很多数学工具,比如决策树,隐马尔科夫。
这里常见的容易混淆的两个概念:
监督学习,通俗讲就是有老师,有老师告诉机器什么是对什么是错,该怎么做。常见的模式就是基于有标签的样本做训练(老师教),然后机器把学到的模式用于解决其它问题。
非监督学习,通俗讲就是没有老师,比如聚类,因为没有人告诉机器什么是对什么是错,所以它就智能根据自己与别人的 距离 或 相似性 进行物以类聚。
一般的机器学习做分类,得到的是一个线性公式,从输入原始数据得到分类结果的一个显示的表达。而用深度学习做分类,它得到的是一种从输入原始数据到输出分类预测的映射关系,这种映射关系可以是非线性的,我们看不到映射是什么样的,但它总是能起作用。
三,神经网络
神经网络是深度学习的一种方法,它常用来做分类。神经网络就是一堆节点和节点间的连线,就是个网络(只是怎么连,有很精妙的设计而已),它就像人的神经一样,有神经元,有激活函数来激活突触,它有学习能力。可以从输入(原始样本)得到输出(对样本所属类别的推测)的映射。现在用的比较多的有三种:卷积神经网络CNN,深度神经网络DNN,递归神经网络RNN。前两种应用场景基本重合,可以互换,但是因为内部结构(DNN 所有节点全连接,CNN则是部分连接)的不同使其参数规模,以及对计算平台的计算资源的要求有不同。RNN则常用来处理和时间有关的序列,比如自然语言识别中,已知前三个字,可以判断出该用户第四个字说什么。