人工智能的一个子领域
神经网络:一种以(人工))神经元为基本单元的模型
深度学习:一类机器学习问题,主要解决贡献度分配问题
诞生:人工智能这个学科的诞生有着明确的标志性事件,就是1956年的达特茅斯(Dartmouth)会议。在这次会议上,“人工智能” 被提出并作为木研究领域的名称。
人工智能=计算机控制+智能行为;
人工智能就是要让机器的行为看起来就像是人所表现出的智能行为一样。 ——John McCarthy ( 1927-2011)
因为要使得计算机能通过图灵测试,计算机必须具备理解语言、学习、记忆、推理、决策等能力 =>
研究领域:
很难实现一个程序把这些规则给写下来,比如语音的识别,数字的识别; => 机器学习:机器自己总结规则(函数)
怎么构建这个函数?就是机器学习要解决的事;
当我们用机器学习来解决一些模式识别任务时,一般的流程包含以下几个步骤:
语义鸿沟:人工智能挑战之一,即对文本、图像的理解无法从字符串或者图像的底层特征直接获取;
比如根据一些底层的像素点就能判断这个图像是不是猫啊狗啊,这是挺难的;
Q:什么是好的数据表示?
一个好的数据表示一般有以下优点:
数据表示是机器学习的核心问题;
局部表示,1维表示一个语义;分布式表示,n维组合表示一个语义;
对于分布式表示:K维非零参数能够表示2k个语义(假设一个维度分左右,即表示两个语义);而局部表示中,K维只能表示K个语义;
以颜色为例:
分布式表示,3个维度能够表示完所有颜色,而如果用局部表示的话则每个颜色需要一个维度,1千种颜色就需要1千个颜色;说明分布式表示的表示能力很强,但解释能力劣于局部表示;分布式表示对于颜色间的对比、相似等操作也能提供很大的便利;
Q:照这么说,分布式表示岂不是可以表示无穷种颜色,还需要3个维度干嘛???
表示学习:如何自动从数据中学习好的表示
传统的特征提取 VS 表示学习:
特征提取有明确的任务或目标,但完成这个任务或目标而提取的特征并不一定有益于后面的分析,而表示学习学习得是有用的特征,有益于右面的分析,但难点在于没有明确地目标,需要后面不断的反馈回来;
Q:什么叫贡献度分配问题?
是底层特征、中层特征还是高层特征对预测的结果影响较大,即当预测了一个较差的结果,我需要知道这主要是因为底层到中层没处理好还是中层到高层没处理好;拿下象棋举例子,我这一下下在这,我怎么知道这是好还是坏,只能通过最后我赢没赢来反馈反推前面哪一步没下好,这就需要大量的练习经验;
Q:怎么解决贡献度分配问题?
神经网络;
一个图像分类的深度学习模型:
深度学习的数学描述:
如果F(x)是线性函数,那么这个就没意义了,因为多个线性函数嵌套依旧还是线性函数,没有能力的提升;
Q:神经网络如何学习?
赫布法则(Hebb Rule):“当神经元A的一个轴突和神经元B很近,足以对它产生影响,并且持续地、重复地参与了对神经元B的兴奋,那么在这两个神经元或其中之一会发生某种生长过程或新陈代谢变化,以致于神经元A作为能使神经元B兴奋的细胞之一,它的效能加强了。”
人工神经网络主要由大量的神经元以及它们之间的有向连接构成。因此考虑三方面︰
人工神经网络由神经元模型构成,这种由许多神经元组成的信息处理网络具有并行分布结构。
虽然这里将神经网络结构大体上分为三种类型,但是大多数网络都是复合型结构,即一个神经网络中包括多种网络结构。
Q:神经网络如何解决贡献度分配问题?
一个点的斜率越大,说明此处 x 的变化对 y 的影响越大,偏导数的概念,那么就知道在哪个地方调参数能够很大程度上影响输出;
概率&随机变量&概率分布
离散随机变量:
伯努利分布:
二项分布:
连续随机变量:
概率密度函数
累计分布函数
联合概率:
都发生指定的情况的概率,就是相乘;
条件概率:
对于离散随机向量(X,Y),已知X=x的条件下,随机变量Y=y的条件概率为
如何构建映射函数 => 大量数据中寻找规律;
机器学习(Machine Learning,ML)是指从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并利用这些规律对未知数据进行预测的方法.
典型的监督学习:回归、分类;
典型的无监督学习:聚类、降维、密度估计;
学习准则:以回归问题为例:
Q:为什么不用训练集上的错误率还验证模型好坏呢?
涉及到模型的泛化问题;
模型选择
如何选择模型?
一般这么选择模型:
将训练集分出一部分作为验证集:
然后在训练集上训练模型,选择在验证集上错误率最小的模型;
这可能导致数据稀疏问题,引入交叉验证方法:
将训练集分为S组,每次使用S-1组作为训练集,剩下1组作为验证集,取验证集上平均性能最好的一组;
也可以根据信息准则:AIC、BIC去选择模型
没有免费午餐定理(No Free Lunch Theorem,NFL):对于基于迭代的最优化算法,不存在某种算法对所有问题(有限的搜索空间内)都有效。如果一个算法对某些问题有效,那么它一定在另外一些问题上比纯随机搜索算法更差。
奥卡姆剃刀原理:若无必要,勿增实体,如果能用一个简单模型解决的问题,切勿用一个复杂模型;
归纳偏置:很多学习算法经常会对学习的问题做一些假设,这些假设就称为归纳偏置。
大数定律(Probably Approximately correct,PAC):当训练集大小D趋向于无穷大时,泛化误差趋向于0,即经验风险趋向于期望风险;
KL散度是用概率分布q来近似p时所造成的信息损失量;
KL(p,q)=H(p,q)-H§
最小化KL散度=最小化交叉熵损失=最大化对数似然
一个良好的分界线,他要离所有的样本都比较远,这样不至于因为某个噪声点而造成较大的干扰,直观上也会感觉模型的健壮性更好;融入一定的噪声问题;
对于如何把异或问题升维成线性可分问题https://www.cxybb.com/article/qq_45769063/106563811
通用近似定理:根据通用近似定理,对于具有线性输出层和至少一个使用“挤压”性质的激活函数的隐藏层组成的前馈神经网络,只要其隐藏层神经元的数量足够,它可以以任意的精度来近似任何从一个定义在实数空间中的有界闭集函数;
感觉其实就是一个函数必然可以用多层神经网络来无限逼近;即神经网络可以作为一个“万能”函数来使用,可以用来进行复杂的特征转换,或逼近一个复杂的条件分布。
链式法则(Chain Rule)是在微积分中求复合函数导数的一种常用方法。
其实不是很懂,但并不是目前我想要掌握的重点,以后有机会再仔细琢磨;
就是利用算子把每一阶段的导数都算出来存储了,相当于把递归给转换成备忘录了,比如h6对h5的导数,并不会关心h5内部怎么实现,是什么函数,而只关心h6和h5的关系;
Q:何为卷积?
计算一个信号的延迟累计
还可以通过增加滑动步长来降低计算次数,减少输出长度;
后面的网络就比较复杂了,感兴趣可以看:https://www.bilibili.com/video/BV13b4y1177W?p=40
RNN通过使用带自反馈的神经元,能够处理任意长度的时序数据;
如果前馈神经网络可以模拟任何的函数,那么RNN就能模拟任何的程序;
有兴趣可以听课程,单单字面理解怕是难搞懂;
重点!
门控循环单元(Gated Recurrent Unit,GRU)
长短期记忆神经网络(Long Short-Term Memory,LSTM)
缺点:
语言模型:一切都是概率;
依赖前面的n-1个状态(语法),即为n元语言模型