为什么神经元叫多层支持向量机和感知机机?

来自Amazon,谷歌,Meta, Microsoft等的面试问题,本文接着昨天的文章整理了机器学习和深度学习的问题

54、什么是机器学习?

机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。

机器学习有下面几种定义:

(1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。

(2)机器学习是对能通过经验自动改进的计算机算法的研究。

(3)机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。

55、什么是无监督学习?

无监督学习是一种机器学习算法,用于从由输入数据组成的数据集中推断,并且学习时不需要对数据进行标记。

主要包括:聚类,降维,异常检测等

56、有哪些不同的分类算法?

下图列出了最重要的分类算法。

57、朴素贝叶斯中的“朴素”是什么?

朴素贝叶斯算法是基于贝叶斯定理的。贝叶斯定理描述了一个事件发生的概率,基于可能与该事件相关的条件的先验知识。

这个算法很“幼稚”,因为它所做的假设可能是正确的,也可能不是。

58、如何建立随机森林模型?

随机森林模型结合了许多决策树模型。所选择的决策树具有高偏差和低方差。每个决策树都取样本的子集,并进行预测。每棵决策树的结果都被记录下来,并以大多数作为答案,在分类问题中是众数,在回归问题中是均值和中位数。

59、详细解释SVM算法

SVM是支持向量机的缩写,它是一种监督机器学习算法,可以用于回归和分类。如果你的训练数据集中有n个特征,SVM尝试在n维空间中绘制它,每个特征的值是特定坐标的值。SVM基于所提供的核函数,利用超平面分离出不同的类。

60、支持向量机中的支持向量是什么?

在图中,我们看到细线标记了从分类器到最近的数据点(称为支持向量)的距离(黑色的数据点)。两条细线之间的距离叫做边距。

61、支持向量机的核函数有哪些?

支持向量机中一般使用四种核函数。

线性核、多项式的核、径向基核、Sigmoid 核

62、详细解释决策树算法

决策树是一种监督机器学习算法,主要用于回归和分类。它将数据集分解为越来越小的子集,同时逐步开发相关的决策树。最终的结果是一个具有决策节点和叶子节点的树。决策树可以同时处理分类数据和数值数据。

63、决策树算法中的熵和信息增益是什么?

构建决策树的核心算法有·ID3、C45等。ID3使用熵和信息增益来构造决策树。

熵:决策树是从根节点自上而下构建的,涉及到将数据划分为同构子集。ID3使用熵来检验样本的同质性。如果样本是完全均匀的,那么熵就是0如果样本是等分的,那么熵就是1。

信息增益是基于数据集在属性上分割后熵的减小。构建决策树是关于寻找返回最高信息收益的属性。

64、什么是决策树中的剪枝?

剪枝是机器学习和搜索算法中的一种技术,它通过移除决策树中对实例分类作用不大的部分来减少决策树的大小。当我们删除一个决策节点的子节点时,这个过程被称为剪枝或反向分裂过程。

65、什么是逻辑回归?举一个你最近使用逻辑回归的例子。

逻辑回归通常被称为logit模型,是一种通过预测变量的线性组合来预测二元分类的技术。

垃圾邮件检测、医疗的病症判断、金融的贷款评估等都是二元分类。

66、什么是线性回归?

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。

x被称为自变量、y被称为因变量

67、线性模型的缺点是什么?

它不能用于计数结果或二元结果

它不能解决过拟合的问题

68、回归和分类的ML技术有什么不同?

回归和分类机器学习技术都属于监督机器学习算法。在有监督的机器学习算法中,我们必须使用带标签的数据集来训练模型,而训练时我们必须明确地提供正确的标签,算法试图学习从输入到输出的模式。如果我们的标签是离散值,那么它将是一个分类问题,如a,B等,但如果我们的标签是连续值,那么它将是一个回归问题,如1.23,1.333等。

69、什么是推荐系统?

推荐系统是信息过滤系统的一个子类,它旨在预测用户对产品的偏好或评级。推荐系统广泛应用于电影、新闻、研究文章、产品、社会标签、音乐等领域。

70、什么是协同过滤?

大多数推荐系统都是用协同过滤的算法进行推荐

协同过滤的一个例子是,可以根据特定用户对其他电影的评分和其他人对所有电影的评分来预测该用户的评分。这一概念广泛应用于IMDB、Netflix & BookMyShow的电影推荐,亚马逊、eBay & Flipkart等电子商务网站的产品推荐,Xbox的YouTube视频推荐和游戏推荐。

71、如何处理异常值?

异常值可以通过使用单变量或任何其他图形分析方法来识别。如果离群值的数量很少,那么可以单独评估它们,但如果离群值数量很大,则可以用第99个百分位数或第1个百分位数替换这些值。

但需要注意的是,并非所有的极端值都是异常值。

72、机器学习项目一般步骤是什么?

通过检测异常值、处理缺失值、转换变量等为建模准备数据。

准备好数据后,开始运行模型,分析结果并调整方法。这是一个迭代的步骤,直到获得最好的可能结果。

使用新数据集验证模型。

开始实现模型并跟踪结果,以分析模型在一段时间内的性能。

73、如何处理缺失的值?

在识别具有丢失值的变量后,需要识别丢失值的范围。如果有任何模式,这可能导致利益和有意义的业务见解。

如果没有确定的模式,则缺失值可以用平均值或中位数(插补)代替,否则可以简单地忽略它们。如果是一个分类变量,则可以分配默认值。如果有数据的分布,则可以为正态分布给出平均值进行填充。如果丢缺失值的很多,例如超过了80%,则可以直接删除变量而不是处理缺失值。

74、您将如何定义聚类算法中的群集数?

尽管不是所有的聚类算法都需要确定集群数,但此问题主要是指k均值聚类。聚类的目的是以一个类似的属性进行分组,即组中的彼此相似,但组间相互不同。

例如,下图显示了三个不同的簇。

如果您为一系列群集绘制WSS,则将获得下面显示的绘图。

该图通常称为肘部曲线。红色在图上图中圈出一个点,即 群集的数量= 6。这一点被称为弯曲点,在k-含义中被称为k。

75、什么是集成学习?

集成学习基本上是将一组不同的学习者(个体模型)组合在一起可以保证模型的稳定性和预测能力。

76、简要描述常见的集成学习?

集成学习有多种类型,下面将介绍两种更受欢迎的集成学习技术。

Bagging尝试在小样本总体上实现相似的学习者,然后取所有预测的平均值。在可以在不同的子集中使用不同的学习方法,这有助于我们减少方差误差。

Boosting是一种迭代技术,它根据最后的分类调整一次观测的权重。如果一个观测数据被错误地分类,它会试图增加这个观测数据的权重,反之亦然。Boosting降低了偏差,并建立了强大的预测模型。但是它们可能会对训练数据过度拟合。

77、什么是随机森林?它是如何工作的?

随机森林是一种Bagging的集成学习方法,能够执行回归和分类任务。它也用于降维,处理缺失值,异常值等。它将一组弱模型组合起来形成一个强大的模型。

在随机森林中,我们会生成多棵树,而不是一棵树。要根据属性对新数据进行分类,每个树给出一个分类。森林选择得票最多的分类(总体森林中的树),在回归的情况下,它取不同树输出的平均值。

78、如何创造随机森林?

几个弱学习者结合起来就能成为一个强学习者。所涉及的步骤如下

使用自举法在训练样本数据上构建若干决策树

在每棵树上,每次考虑拆分时,都会从所有预测器中选择一个预测器的随机样本作为拆分候选

79、你时间序列数据集使用什么交叉验证技术?

时间序列不是随机分布的数据—它本质上是按时间顺序排列的。

对于时间序列数据,应该基于过去的数据建模,然后查看向前的数据。

Box-Cox变换是Box和Cox在1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。Box-Cox变换的主要特点是引入一个参数,通过数据本身估计该参数进而确定应采取的数据变换形式,Box-Cox变换可以明显地改善数据的正态性、对称性和方差相等性,对许多实际数据都是行之有效的

81、如果你的机器有4GB内存,你想在10GB数据集上训练你的模型。你将如何着手解决这个问题?到目前为止,在你的机器学习/数据科学经验中,你是否遇到过这种问题?

首先,你要问你想训练哪个ML模型。

对于神经网络:批量大小是可调的,所以调整到适合4GB的批大小就可以。

对于SVM可以使用部分拟合,将一个大数据集划分为小数据集,使用SVM的部分拟合方法。

82、你理解的深度学习是什么意思?

深度学习只不过是机器学习的一个范例,它在最近几年显示出了令人难以置信的前景。这是因为深度学习与人脑的功能有很大的相似之处。

83、机器学习和深度学习的区别是什么?

机器学习是计算机科学的一个领域,它赋予计算机学习的能力,而无需明确编程。机器学习可以分为以下三类。

深度学习是机器学习的一个子领域,其算法的灵感来自于被称为人工神经网络的大脑结构和功能。

84、最近深度学习流行的原因是什么?

尽管深度学习已经存在多年,但这些技术的重大突破是在最近几年才出现的。这主要有两个原因:

通过各种来源产生的数据量的增加

运行这些模型所需的硬件资源的增长

gpu的速度是以前的好几倍,在相对较短的时间内构建更大、更深入的深度学习模型。

85、解释神经网络基础知识

数据科学中的神经网络旨在模仿人类大脑神经元,不同的神经元结合在一起执行任务。它从数据中学习概括或模式,并使用这些知识来预测新数据的输出,而无需任何人工干预。

最简单的神经网络是感知器。它包含一个神经元,执行两个操作,所有输入的线性计算和一个激活函数。

更复杂的神经网络由以下3层组成-

隐藏层——这是输入层和输出层之间的层。最初的隐藏层通常有助于检测低级模式,而进一步的层结合以前层的输出来发现更多的模式。

输出层——输出层是输出预测的最后一层。

下图显示了一个神经网络-

86、什么是强化学习?

强化学习是学习该做什么以及如何将情况映射到行动上的一种模型。学习者没有被告知采取哪种行动,而是必须发现哪种行动会产生最大的回报。强化学习是受人类学习的启发,建立在奖惩机制的基础上。

87、什么是人工神经网络?

人工神经网络是一套特定的算法,它彻底改变了机器学习。它们的灵感来自生物神经网络。神经网络能够适应输入的改变,从而在不需要重新设计输出标准的情况下产生最佳的可能结果。

88、描述人工神经网络的结构?

人工神经网络的工作原理与生物神经网络相同。它由输入组成,在激活函数的帮助下,用加权和和偏差进行处理。

89、如何初始化网络中权重?

这里有两种方法:我们可以将权重初始化为0,或者随机赋值。

将所有权值初始化为0:这将使您的模型类似于线性模型。所有的神经元和每一层都执行相同的操作,产生相同的输出,使深网变得无用。除了rnn/lstm的隐藏状态其他都不应该初始化为0,但是rnn/lstm在特殊情况下也可以不初始化为0

随机初始化所有权值:权值是通过非常接近0的初始化随机分配的。由于每个神经元的计算量不同,因此模型的精度更高。这是最常用的方法。

90、什么是成本函数?

也被称为“损失”或“错误”,成本函数是评估您的模型性能有多好的度量。用于计算反向传播过程中输出层的误差。我们通过神经网络向后传播这个错误并在不同的训练函数中使用它。

在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数。而其他参数的值通过训练得出。也就是说,超参数会影响我们参数的训练,所以被称之为超参数。

定义关于模型的更高层次的概念,如复杂性或学习能力。

不能直接从标准模型培训过程中的数据中学习,需要预先定义。

可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定

矩阵分解中潜在因素的数量

92、学习率设置不准确(过高或过低)会发生什么?

当学习率太低时,模型的训练将进展得非常缓慢,因为我们只对权重进行最小的更新。在到达最小值点之前需要进行多次更新。

如果学习率设置得太高,由于权重的剧烈更新,会导致损失函数产生不希望看到的发散行为。它可能无法收敛(模型可以给出很好的输出),甚至发散(数据太混乱,网络无法训练)。

Epoch——表示整个数据集的一次迭代(所有放入训练模型的内容)。

Batch -指我们不能一次将整个数据集传递到神经网络,所以我们将数据集分成几个Batch。

93、CNN有哪些常见的层?

卷积层——执行卷积操作的层,创建几个较小的图片窗口来查看数据。

激活层-它为网络带来非线性,一般使用relu

池化层—池化是一种降采样操作,可以降低特征映射的维度。

全连接层-该层识别并分类图像中的对象。

94、池化层在CNN中是如何运作的?

使用池化的方法来降低CNN的空间维度。它执行下采样操作来降低维数,并通过在输入矩阵上滑动一个滤波矩阵来创建一个汇集的特征映射。

95、什么是循环神经网络(RNNs)?

rnn是一种人工神经网络,旨在从时间序列、股票市场和政府机构等数据序列中识别模式。要理解循环,首先必须了解前馈神经网络的基础知识。

这两种网络都是以它们通过在网络节点上执行的一系列数学运算来传递信息的方式命名的。一种直接提供信息(从不接触相同的节点两次),而另一种通过循环提供信息,所以被称为循环。

循环网络的输入不仅是他们看到的当前输入例子,还包括他们之前感知到的。

循环神经网络在t-1时刻做出的决定会影响到它在t时刻之后做出的决定。因此网络有两个输入源,现在和最近的过去,模型将他们结合起来对新数据做出反应,就像我们在生活中做的那样。

96、LSTM网络是如何工作的?

长-短期记忆(long-term Memory, LSTM)是一种特殊的循环神经网络,具有学习长期依赖的能力,其默认行为是长时间记忆信息。在LSTM网络中有三个步骤:

网络决定什么该忘记,什么该记住。

它有选择地更新单元格状态值。

网络决定输出当前状态的哪一部分。

97、什么是多层感知机(MLP)?

mlp有一个输入层、一个隐藏层和一个输出层。它与具有一个或多个隐藏层的单层感知器具有相同的结构。单层感知器只能对输出为二元(0,1)的线性可分离类进行分类,而多层感知器可以对非线性类进行分类。

除了输入层,其他层中的每个节点都使用非线性激活函数。这意味着输入层、传入的数据和激活函数基于所有节点和权重相加,从而产生输出。MLP使用了一种名为“反向传播”的监督学习方法。在反向传播中,神经网络利用代价函数计算误差。它从它的来源向后传播这个错误(调整权重以更准确地训练模型)。

98、简单解释梯度下降

要了解梯度下降,让我们先了解什么是梯度。

梯度测量的是如果输入改变一点点函数输出的变化。它只是测量所有权重的变化和误差的变化。你也可以把梯度看成是一个函数的斜率。

可以认为梯度下降是爬到山谷的底部,而不是爬上山丘。这是因为它是一种最小化给定函数(激活函数)的最小化算法。

99、什么是梯度爆炸?

在训练时,如果你看到指数级增长(非常大)的误差梯度,积累并导致在训练过程中对神经网络模型权重进行非常大的更新,它们被称为梯度爆炸。在极端情况下,权值可能变得非常大,以至于溢出并导致NaN值。

这会导致模型不稳定,无法从训练数据中学习。

100、什么是梯度消失?

当训练时,你的梯度可以变得太小;这使得训练变得困难。当梯度太小时,这个问题被称为消失梯度。这会导致长时间的训练,糟糕的表现和低准确性。

101、什么是反向传播并解释它的工作原理。

反向传播算法是一种用于多层神经网络的训练算法。在这种方法中,将误差从网络的一端移动到网络内的所有权值,从而可以高效地计算梯度。

利用输出和目标计算导数

反向传播用于计算wrt输出激活的误差导数

使用先前计算的导数来计算输出

102、反向传播有哪些变体?

随机梯度下降:我们只使用一个单一的训练例子来计算梯度和更新参数。

批量梯度下降:我们计算整个数据集的梯度,并在每次迭代时执行更新。

小批量梯度下降:这是最流行的优化算法之一。它是随机梯度下降法的一种变体,这里使用的不是单一的训练例子,而是小批量的样本。

103、有哪些不同的深度学习框架?

104、激活函数的作用是什么?

利用激活函数将非线性引入神经网络,帮助其学习更复杂的函数。没有它神经网络将只能学习线性关系,即输入数据的线性组合。

105、什么是自动编码器?

自动编码器是一种简单的学习网络,旨在以最小的误差将输入转换为输出。这意味着我们希望输出尽可能接近输入。我们在输入和输出之间添加了几层,这些层的大小比输入层小。自编码器接收未标记的输入,然后对其进行编码以重构输入。

106、什么是玻尔兹曼机?

玻尔兹曼机器是一个简单的学习算法,可以让它们发现在训练数据中代表复杂规律的有趣特征。玻尔兹曼机主要用于优化给定问题的权重和数量。在具有多层特征检测器的网络中,学习算法的速度很慢。“受限玻尔兹曼机器”算法只有一层特征检测器,这使得它比其他算法更快。

Dropout是一种随机删除网络中隐藏和可见单元的技术,以防止数据过拟合(通常会删除20%的节点)。它使网络收敛所需的迭代次数翻倍。

BN是通过对每一层的输入进行归一化,使其平均输出为0,标准差为1,从而提高神经网络的性能和稳定性的技术。

108、什么是计算图?

张量流中的一切都是基于创建一个计算图。它有一个节点网络,每个节点都在其中工作,节点代表数学运算,边代表张量。在计算图中,节点是输入值或用于组合值的函数。当数据流过图形时,边会收到它们的权重。输入节点的出站边用该输入值加权;来自函数节点的出站节点通过使用指定函数组合入站边的权重来加权。

所有深度学习框架都依赖于创建计算图来计算梯度下降优化所需的梯度值。通常,你必须构建前向传播图,而框架将为你处理反向微分。

静态图的优点之一是它允许对图进行强大的离线优化/调度。这意味着这些通常会比动态图更快(在每个用例中差异可能并不显著,这取决于我们的图)。缺点是处理结构化或者可变大小的数据比较复杂。

动态图是调试友好的。查找代码中的问题要容易得多,因为它允许逐行执行代码,并且你可以访问所有变量。如果你想将深度学习应用于行业的任何实际目的,这绝对是一个非常重要的特性。

kaggle比赛交流和组队

感知机(perceptron)于1957年由Rosenblatt提出,是一种二分类线性模型。感知机以样本特征向量做为输入,输出为预测类别,取正、负两类。感知机最终学习到的是将输入空间(特征空间)划分为正、负两类的分离超平面,属于判别模型。为此,使用误分类做为损失函数,利用梯度降低优化该函数,可求得感知机模型。感知机是神经网络与支持向量机的基础。git

第 个样本的预测值 ,其中 称为激活函数, ,损失为 。单层感知机的目的就是习得合适的 与 ,使得全部样本的损失之和 最小。github

若是咱们令 即感知机的输入。那么当 时,;当 时, 。由于 是 线性组合,因此最终获得的是一个超平面 ,超平面将输入样本分为了 和 -1两类。算法

当输入 是二维向量时,用红点表示 的数据,黑点表示 的数据,最终习得的是一条直线,将两个数据分离开,以下图所示。bash

由于单层感知机最终习得是超平面,因此只能用于解决线性可分问题。对于下面这样的数据,单层感知机无能为力。网络

多层感知机也叫MLP,能够看作是一个有向图。MLP由多层节点组成,每一层全链接到下一层,除输入节点外,每一个节点都是一个带有非线性激活函数的神经元(unit)。多层感知机可用于解决线性不可分问题。机器学习

由于神经网络的和多层感知器是一个意思,因此下面直接对单层前馈神经网络进行详细说明。函数

下图是一个输入层节点数为3,隐藏层节点数为2,输出层节点数为2的前馈神经网络,该网络可用于解决二分类问题。学习

单层前馈神经网络本质上是一个多层感知机,有如下几个特色:优化

  1. 全链接。每一层的节点都与右边层的全部节点经过权重链接。
  2. 隐藏层只有一层。因此称之为单层
  3. 数据单向流动。每一层节点只做用于其以后的层,因此叫做前馈
  4. 本质是数学函数。神经网络能够明确的用数学语言表达。

咱们拿出隐藏层的一个神经元(unit)放大来看:

神经元的任务就是接受输入,产生输出

z 表示神经元的输入,a 是神经元的输出。

输入怎么得来?就是上一层的神经元输出与权重 的乘积之和再加上偏置

输出怎么得来?把输入值带入激活函数 获得。

Sigmoid的表达式为 ,定义域为 ,值域为

在 处,函数值为 ,其函数图像以下:

sigmoid函数有许多优美的性质,如:

  1. 是 的复合函数, 又名天然常数

  2. 1阶导函数为 。即函数在某一点的导数可由函数在这一点的函数值求得

  3. 曲线光滑,定义域内到处可导,且能够无限次求导

  4. 能够把任意输入压缩到 范围内

在反向传播算法(BP算法)中,性质二、3起到了极大的做用,性质4起到了防溢出的做用。

现考虑一个样本 ,其中 是输入数据,是实际值。咱们如今来手动计算 的计算过程是从输入层开始从左往右计算的,因此这个过程也叫做前向传播。

下图表示,为了获得 ,有哪些神经元被激活了。

为了方便表述,用 表示第 层的第 个神经元与第 层的第 个神经元相连的权重,用 表示第 层第 个神经元的偏置值。

注意。输入层没有激活函数,因此:

若是咱们把 做为类别为 的几率,将 做为类别为1的几率,则样本 的预测值能够写成 ,因此为了让 ,选用 做为输出层的激活函数。

咱们令 ,,那么 ,同理设

神经网络能够明确的用数学语言表达,它的函数表达式,能够明确的写出来
 
若是真的将这个数学表达式写出来,那么这个数学函数 是一个包含 个参数的函数,函数输入 可获得预测值 ,这个表达式会很是长。
咱们如今来优化网络中这10个权重参数和4个偏置参数。
定义输出层的节点 的偏差,可用的损失函数有:
 
使用梯度降低算法来优化损失函数,则须要求出损失函数对全部参数的导数,这个过程在计算上是从输出层开始从右往左计算的,由于与计算预测值 的过程恰巧相反,因此也叫做反向传播。
以计算权重 的偏导数为例,根据链式法则不可贵到:


∴ (注:这是二分类问题特有的交叉熵表示方式)





更通用化的表达,如何计算 ?依葫芦画瓢得:

令 表示输出层节点 的偏差值


如何理解?用 表示为隐藏层节点的位置, 表示为输出层节点的位置,那么权重 的导数为该权重前一层第i个节点的激活值与后一层第j个节点的偏差值的乘积
下图是反向传播的示意图,损失函数产生的偏差顺着红线一直往左边传,每通过一条红线就求一次导数,直到要求的权重也覆盖在红线为止。下图有三条红线,也就是损失函数 对 的导数须要用三个偏导数乘积造成的链式求导才能获得,且最后一个偏导数值为 。
 
如何计算 呢?继续使用链式法则 + 依葫芦画瓢可得:

令 为 的偏差值 ,那么上式能够写成:



如何理解?若是用 表示输入层节点位置, 表示隐藏层节点位置,那么权重 的导数为 该权重前一层第i个节点的激活值与后一层第j个节点的偏差值的乘积每一个节点的偏差值 等于 链接权重 与 权重另外一端所连节点的偏差值 的乘积之和 与 本节点激活值的导数 的乘积
详细的推导过程读者能够本身琢磨一下,这里有个关键点须要注意:
如何求 的导数?根据以前的逻辑推导便可:

如何求 的导数?链条太长,这里直接给出答案:

与权重导数不一样的地方就是,在求导过程当中的最后一项 。
若是加入偏置单元,也能够理解为偏置单元 的值为1,以下图所示:
 
 
正则化(regularation)是防止机器学习过拟合的一种手段。一种常见的手段是经过将权重的平方之和加入到损失函数来实现。那么损失函数变为:

全部权重、偏置之和称为 正则项 , 是 正则项系数,也叫 惩罚系数
加入正则化项后, 的导数要多算一个平方项的导数,以 为例

咱们假设输入值 、 实际值 都是列向量。
观察 、 的表达式,进而发现能够用矩阵形式书写为:

不失通常性,设第 层的前向传播:,其中 、 、 均为列向量,
激活值 ,因此激活值也是列向量。



表示把矩阵 的全部元素之和
* 表示求哈达马积,即两个矩阵对应位置的元素的乘积所造成的一个新矩阵










上述全部过程都是假设只有一个样本。
当参与计算的样本数量大于1时:
  • 单个损失函数 => 全部样本损失值求平均
  • 单个样本的输出层偏差 => 全部样本输出层偏差求平均
 
你不用写一个for循环来计算上述值,使用矩阵乘法会更为方便,这里留给读者思考。

ann.py 是面向过程版本实现,且隐藏层数只能为1。
NN.py 是面向对象版本实现,支持多层隐藏层。

我要回帖

更多关于 支持向量机和感知机 的文章

 

随机推荐