龙空技术网

北京大学何宇健:传统算法如何转化成神经网络?

雷峰网 3065

前言:

现在小伙伴们对“神经网络自主生成算法”都比较看重,你们都需要学习一些“神经网络自主生成算法”的相关内容。那么小编也在网上网罗了一些对于“神经网络自主生成算法””的相关内容,希望咱们能喜欢,你们快快来学习一下吧!

雷锋网AI研习社按:在当今AI时代中,CNN和RNN都被广泛关注,并且有很多相关讨论,而最基础的神经网络DNN,它的研究和曝光度却相对较少。DNN是所有其它神经网络的基础,所以对它有一定了解是必要的。本文为大家详细介绍了传统机器学习的基本概念和神经网络的基本结构,以及如何设计神经网络结构让神经网络表达出朴素贝叶斯和决策树这两大传统算法模型。文章内容根据AI研习社线上分享课整理而成。

我们都知道神经网络很强,但却只有很少人去思考它为什么这么强。在近期雷锋网AI研习社的线上分享会上,资深Python工程师何宇健为我们分享了如何设计神经网络结构让神经网络表达出朴素贝叶斯和决策树这两大传统算法模型。希望这种设计能让大家从直观上感受到神经网络的强大。

何宇健,《Python与机器学习实战》作者,来自北京大学数学系,有多年Python开发经验,在GitHub上拥有并维护着一个纯Python编写的机器学习算法库(180个stars,100个forks)。曾在创新工场AI工程院负责研发适用于结构化数据的新型神经网络。希望这种设计能让大家从直观上感受到神经网络的强大。

分享内容:

机器学习的基本概念与神经网络的基本结构

朴素贝叶斯、决策树算法简介以及它和神经网络的关系

具体的实现说明,以及可以做出改进与创新

大家好,我是何宇健。在当今的AI时代中,CNN和RNN都被广泛关注,并且有很多相关讨论,’而最基础的神经网络DNN,它的研究和曝光度却相对比较少。DNN是所有其它神经网络的基础,所以对它有一定了解是必要的。有些同学可能对机器学习相关概念不熟悉,因此分享的所有内容都从最基础的开始讲起。

分享主要内容通过设计神经网络结构来让神经网络表达出朴素毕叶思和决策树这两大传统算法模型。希望这种设计能让大家从直观上感受到神经网络的强大。

机器学习的基本概念及神经网络的基本结构

本次分享涉及的问题都是有监督学习问题。所谓有监督学习,就是对一个模型来说,它的输入都会对着一个目标。最终目的是模型的输出和目标尽可能接近。

机器学习术语:

特征向量:模型接受的输入通常称为特征向量,用字母X代指。

标签:模型拟合的目标通常称为标签,用字母Y代指。

样本:通常听到的“样本”概念是特征向量+标签的组合,用d=(x,y)代指

数据集:就是很多个样本的集合,通常用D=(d1,d2,...dn)代指。

损失函数:计算单个样本上模型的“损失”的函数。

代价函数:计算整个数据集上模型的“代价”的函数。

接下里进入神经网络正题的讨论。

神经网络包含输入层,隐藏层,输出层。在说有多少层神经网络时,我们不会把第一层算入其中,也就是输入层。

层与层之间的沟通方式

每一层的每个神经元都会和下一层中的每个神经元连接,这种方式称为全连接。在数学公式中,这种全连接称为矩阵乘法。线性映射和激活函数是神经网络的基本运算单元。

偏置量:打破对称性

除非数据集本身是中心对称,否则现在的神经网络就不可能学到数据集背后的规律。现在的神经网络只能学到中心对称的规律。

神经网络的基本算法

前向传导算法,它是神经网络计算模型输出的过程。就是一步步将当前值往前传,往前计算。

梯度下降法,神经网络进行训练的算法。梯度下降中的梯度就是使得函数值上升最快的方向,我们的目的是最小化损失函数,如果梯度是使得函数值上升最快的方向,那么负梯度方向是使得函数值下降的方向。

神经网络和传统机器学习算法的对比

传统机器学习贝叶斯

朴素贝叶斯思想:出现概率越大的样本就是越好的样本。知道思想后, 如何具体进行操作呢,如何估计出朴素贝叶斯公式中涉及到的概率呢?它会用频率估计概率的方法来把各个概率都估计出来,说的直白点就是数数。

事实证明我们确实能通过一个数据集把朴素贝叶斯模型生成出来。

下面来看看如何用神经网络来表达生成出来的朴素贝叶斯模型。朴素贝叶斯里面用到非常多乘法,而线性模型里面全都是加法,此时会想到用到对数函数log。

我们证明了朴素贝叶斯是线性模型,而神经网路能退化为线性模型,从而意味着神经网路能将朴素贝叶斯表达出来。

接下来介绍决策树和神经网路关系。同样会证明神经网路能将决策树表达出来。

决策树很简单,它会先把特征向量空间划分为一个一个互不相交的子空间,划分完之后会给子空间打标签。做预测的时候,会根据输入的X,看它是属于哪个子空间,然后将相应的标签输出给它。

决策树也有很多问题,但只要给了数据集,不出现同一个特征向量对应两种不同标签的情况,那么决策树是百分百可以将数据集的所有样本拟合正确。因为他只需要不断将子空间细分就可以了。

设计神经网络结构以表达出决策树的算法

设计的关键思想总结为以下三点:

第一个隐藏层能表达出决策树的中间节点所对应的超平面。

第二个隐藏层能够表达出各个决策路径

第二个隐藏层和输出层之间的权值矩阵能够表达出各个叶节点。

我们可以看到,第二个隐藏层和输出层之间的权值矩阵确实能够表达出各个叶节点。因此也完成了决策树往神经网络的转化。

具体实现与改进创新

如何进行具体的实现以及改进和创新。事实证明确实可以将传统算法转化为神经网络,但是这种转化是否真正有意义呢?通过改变决策树对应的神经网络的激活函数,其实可以得到一些有意思的结果。可以关注AI研习社看直播视频回放。

决策树转换为神经网络的例子

右边的结果不一定更好,但至少从直观上看边界可能更舒服一点。

总结:

更多详细内容,请点击:

雷锋网提醒:关注微信公众号:AI研习社,定期有免费干货内容分享。

标签: #神经网络自主生成算法