1.人工智能定义:
努力将通常由人类完成的智力任务自动化。
根据定义来看,人工智能是一个比较综合的领域,不仅包括机器学习和深度学习,也包括了一些不涉及学习的方法,比如早期使用足够多的硬编码规则(就是if else这类)来模拟人工,被称为符号主义人工智能(symbolic AI),但是这种方法无法解决某些无法用规则描述的任务,比如,我们无法用规则来描述某张图片是不是猫,我们无法用规则做语音的识别等等。所以出现了一种新的方法来代替符号主义,这就是机器学习。
注:机器学习之外还有符号主义等归属于人工智能的方法
2.机器学习:
早期的程序设计是人为定义规则,机器根据人为定义的规则寻求答案,如果人为设计的规则有漏洞,那就会出错。机器学习换了一种思路,它需要的是数据以及数据的答案,根据这些内容生成我们需要的规则,如果我们把世间上任何一种问题的规律都视为一种函数,那么我们也可以说,机器学习是通过数据及答案来帮助我们寻找对应问题的函数。
当然,我们也可以说,机器学习是在帮我们寻找数据的更好的表达方式,比如我们使用机器学习的方法将某个26*26像素的黑白图片(本质是个26*26维的向量)转化为一个一维的数字,这个数字代表了这张图是猫的概率。我们也可以将这个向量转化为这个猫的特征向量(比如图片中的猫有多高,是什么猫)那么机器学习实际上就是在寻找这个26*26维的更好的表示(representation),或者说我们所需要的表示。
总结:机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在于学习输入数据的有用表示(representation)——这种表示可以让数据更接近预期输出。
例子:这里我们需要区分黑点和白点,原始坐标系中,若想简单的利用坐标值完成这个任务是比较困难的,如果我们能够找到第三张图中的这种坐标表示,那么用一条简单的规则就可以描述黑 / 白分类问题:“x>0 的是黑点”或“x<0 的是白点”。而这里的坐标变化在线性代数里面无非就是简单的线性变换,通过对所有原始坐标向量左乘某个最优矩阵,就可以将它们全部转换到第三张图中的坐标表示,我们也就得到了更好的坐标表示。
而如果我们尝试系统性地搜索各种可能的坐标变换(线性变换就是搜索左乘的矩阵,非线性变换就再加一个非线性的函数-激活函数),并用正确分类的点所占百分比作为反馈信号,那么我们做的就是机器学习。机器学习中的学习指的是,寻找更好数据表示的自动搜索过程。
3.深度学习之深度
深度学习中的神经网络是由许多层构成的,层与层之间通过左乘矩阵做线性变换(有时会加上一个bias)并通过一个非线性的激活函数获得层的输出。层输出的向量对应越来越有意义的表示,并且也往往越来越偏离原有的输入向量,层的数量也被称为模型的深度,所以深度学习也常被称为分层表示学习和层级表示学习,深度学习不同于一般机器学习,一般的机器学习只会去学习一两层的数据表示,这就是浅层学习。浅层学习往往由于无法得到更多次的变换而导致表示不足,所以能力较深度学习差。但是深度学习也有可能因为过多次的转换而表示过度。
4.为什么需要激活函数
首先激活函数就是向量做线性转换后需要再次通过的一种函数(某些专家也将线性变换称为”前激活“,激活函数称为”后激活“),有些时候,对向量做简单的线性变换可能无法将其很好的表示成我们所需要的向量,这就需要引入激活函数这一更加强有力的非线性变换来帮助我们达到目的。
5.深度学习的技术定义
用多阶段的方式来学习数据更好的表示方法(a multistage way to learn data representations)
6.三张图理解深度学习的过程
第一张
神经网络对每一层向量的操作保存再该层的权重中(就是个矩阵,如果网络是全连接的话,这个矩阵的第一行乘以该向量得到的数值对应于该层前激活输出向量的第一维,矩阵第i行向量也是输入向量每一维与该层输出向量第i维连接的权重向量)
我们所谓的学习也就是不断的在更改这个矩阵里面的值,通过更改值达到对输入向量更好的变换。
那么,我们根据什么来更改矩阵里面的值呢?
这就引入了损失函数
通过对比我们预测出的结果与真实结果的差距,形成反馈来更改我们权重矩阵中的值。
参考:《Deep Learning with Python》