『壹』 神经网络,什么过拟合,什么是欠拟合
欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距太大。
通过调整模型的容量(capacity),我们可以控制模型是否偏向于过拟合或者欠拟合。通俗地,模型的容量是指其拟合各种函数的能力。容量低的模型可能很难拟合训练集。容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。
『贰』 神经网络,什么过拟合,什么是欠拟合
欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距太大。
相关介绍:
人工神经网络(ANN)或联结主义系统是受构成动物大脑的生物神经网络的启发但不完全相同的计算系统。这种系统通过例子来“学习”执行任务,而不用特定于任务的规则进行编程。
例如,在图像识别中,人工神经网络可能会通过分析一些图像样本来学习识别包含猫的图像,这些图像被手工标记为“猫”或“不是猫”,并使用结果识别在其他图像中的猫。
他们这样做是在没有猫的任何先验知识的情况下进行的,例如,它们有毛皮,尾巴,胡须和类似猫的脸。相反,人工神经网络会自动从它们处理的学习材料中生成识别特征。
人工神经网络是基于称为人工神经元的连接单元或节点所构成的集合,这些单元或节点松散地模拟生物大脑中的神经元。像生物大脑中的突触一样,每个连接可以将信号从一个人工神经元传输到另一个人工神经元。接收信号的人工神经元可以对其进行处理,然后向与之相连的附加人造神经元发出信号。
『叁』 请问大神:函数拟合神经网络(fitnet)是BP神经网络吗在线等待中。
是BP神经网络,是一个只有一个隐含层的的BP神经网络。
tansig和purelin作为传递函数
另外需要指出的是,在建立的神经网络中,权重和阈值是归一化后的参数使用的权重和阈值,归一化的过程是在fitnet()函数中进行的。
具体的问题可以使用下面的代码来加深理解。
clear
clc
[x,t] = simplefit_dataset;
net = fitnet(10);
net = train(net,x,t);
y = net(x); %x为输入,t为输出
%获取模型参数
w1= net.iw{1,1};
b1=net.b{1};
w2 = net.lw{2,1};
b2=net.b{2};
%%%查看网络的传递函数
ss=net.layers{1}.transferFcn;
sw=net.layers{2}.transferFcn;
x1=mapminmax(x); %x1为原始数据归一化后的输入数据
[t1,ps]=mapminmax(t); %t1为原始数据归一化后的输出数据
t11=w2*(tansig(w1*x1+b1))+b2; %t11为神经网络求取的归一化输出数据
t12=mapminmax('reverse',t11,ps); %t12为使用模型参数并且反归一化后的输出数据
『肆』 神经网络:欠拟合和过拟合
以我们前面讲述的线性回归为例,比如我们在训练集上训练出最优的模型,但是当我们将其使用到测试集时,测试的误差很大,我们该怎么办?
我们一般采取的措施主要包括以下6种:
增加训练样本的数目(该方法适用于过拟合现象时,解决高方差。一般都是有效的,但是代价较大,如果下面的方法有效,可以优先采用下面的方式);
尝试减少特征的数量(该方法适用于过拟合现象时,解决高方差);
尝试获得更多的特征(该方法适用于欠拟合现象时,解决高偏差);
尝试增加多项式特征(该方法适用于欠拟合现象时,解决高偏差);
尝试减小正则化程度λ(该方法适用于欠拟合现象时,解决高偏差);
尝试增加正则化程度λ(该方法适用于过拟合现象时,解决高方差);
上面的方法不是随机选择,是在合适的情况下(过拟合和欠拟合)选择合适的方法,对于怎么判断一个模型是过拟合还是欠拟合,我们会在下面给出一些机器学习诊断法。
如何对一个假设进行评估?
我们前面在讲述线性回归和逻辑回归时,只是注重针对训练数据集训练出一个最优的参数,但是我们训练处的模型对于测试集的性能好坏我们没有进行判断,我们只是训练的模型使得损失函数最小,我们前面也讨论过,在训练数据集上损失函数最小并不能代表对于给定的测试数据,测试数据的评估非常准确,比如过拟合现象发生时,那我们如何评价一个假设的好坏呢?
主要的方法包括两种:
1.对于简答的模型,我们可以采用将hθ(x)的图像画出,来判断模型的好坏,但是这种方法对于特征变量不是一个时,这种方法很难实现或者不可能实现。例如我们曾经看到过这样的图像,可以通过hθ(x)的图像明显可以看出,该假设存在着过拟合现象。
2.另一种评估假设的方法为:将原来的数据集分为训练集和测试集,一般我们是从原来的数据集中随机选取(保证训练集和测试集中都含有各种类型的数据)70%的数据作为训练集,剩下的30%的样本作为测试集。同时这种将原来数据集划分为训练集和测试集的方法可以用于帮助特征选择、多项式次数的选择以及正则化参数的选择等。数据集划分的过程如下:
以上面数据集为例,选取前7个为训练集,后3个为测试集。用前7个数据集做训练训练出一个最优的模型,评价这个训练出的模型的好坏可以使用测试集来进行判断,判断的标准可以使用测试集的损失函数来进行定量的衡量。
对于回归问题,测试集的损失函数计算公式如下:
Jtest(θ)=12mtest∑i=1mtest(hθ(x(i)test)−y(i)test)2
而对于分类问题,测试集的损失函数计算公式如下:
这种测量方式,如果测试样本损失函数很大,则代表训练出的模型泛化能力不好。
对于分类问题,还有另外一种测量的方式,称为误分类率,它对于每一个测试样本进行计算,计算的公式如下:
error=1mtest∑i=1mtesterr(hθ(x(i)test),y(i)))
其中,
模型的选择和交叉验证集:
上述我们是在模型选择好了之后进行训练的,也就是上述我们都是确定了假设进行训练的,但是我们怎么对模型进行选择呢,这一节我们来讨论一下模型的选择,以及和交叉验证集的关系。
模型选择主要包括以下内容:1.怎样选择正确的特征来构造学习算法?2.怎样选择学习算法中正则化参数λ?等问题。
首先我们结合一个例子来引出模型的选择和验证集:
例如我们有上面十个模型,我们对于给定的数据集选择哪种模型呢?按照我们上面讨论的将数据集划分为训练集和测试集,使用训练集对上述模型进行训练,然后使用测试集来进行选择最佳的模型,比如最优的为第五个模型,但是这并不能衡量这个模型的泛化能力,因为测试集已经用于选择最优的模型,这个模型对于其他未知数据的泛化能力还是未知的。
所以针对上述问题我们可以将数据集划分为训练集、交叉验证集和测试集。一般情况下,训练集占总样本的60%,交叉验证集占20%,测试集占20%。其中训练集用于训练,交叉验证集用于选择最优的模型,测试集用于测试模型的泛化能力。
模型选择方法为:
1. 使用训练集训练10个模型;
2. 用10个模型分别对交叉验证集计算出交叉验证误差(代价函数的值),其中计算公式为:
3. 选取交叉验证误差最小的模型作为选择的模型;
4. 用测试集对选择出的模型计算泛化能力(测试样本的损失函数),计算公式如上文中讨论的一样。
假设对诊断偏差和方差(即过拟合还是欠拟合)的影响
利用上述方法学习到的算法性能不好一般会有两种情况:
1.会出现过拟合,也就是所谓的方差很大;
2.会出现欠拟合,也就是所谓的偏差很大;
首先应该确定算法性能的不好,是由哪种原因造成的,然后针对不同的情况采取不同的改进策略,可以有效的改进当前的算法。下面我们来讲述一下怎么判断是过拟合还是欠拟合。
以下面例子为例,来进行讨论:
我们可以通过绘制出训练集的代价函数和交叉验证验证集的代价函数与方次d的关系来进行判断是上述哪种情况的一种:
对于训练集,当d较小时,模型的拟合程度不是很好,所以训练样本集的代价函数比较大;随着d的增加,模型的拟合程度不断提高,代价函数不断的减小;
对于交叉验证集,由于d比较小时,模型的拟合程度不是很好,对于新来的样本预测结果会偏差很大,所以交叉验证集的代价函数在初始阶段会很大,而随着d的增加会出现一个比较好的方次d,使得模型的拟合程度最佳,同时对于新来的样本泛化能力很强,所以会有一个代价函数最小的点出现(该转折点即是模型开始由欠拟合转向过拟合的点),随后随着d的增加,由于过拟合,会存在对新的样本预测结果不良的现象,所以代价函数会逐渐增大。
当我们绘制出上述曲线时,我们就可以判断出什么时候是过拟合什么时候欠拟合,判断的标准如下:
1. 当训练误差与交叉验证集误差接近时,并且都很大时,该模型高偏差(欠拟合);
2. 当训练误差远小于验证集误差时,并且训练误差很小时,该模型高方差(过拟合)。
判断出该模型是过拟合或者欠拟合之后,然后使用上述提到的过拟合和欠拟合的解决方法,对算法进行改进。
正则化对偏差和方差的影响
我们前面讲述过正则化可以有效的处理过拟合现象,但是我们上述所说的处理过拟合是在合适的λ情况下,那么λ值的大小对模型的性能是怎样影响的呢?我们采用上述与方次d对性能的影响相同的方式来分析λ的值对性能的影响。
我们首先选择一系列的λ值,通常λ的选择是0~10之间呈现二倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,5.26,5.12,10)
构建方式如下:
选择λ的方法如下:
1.使用训练集训练处12个不同程度正则化模型;
2.用12个模型分别对交叉验证集计算出交叉验证误差;
3.选择得出交叉验证误差最小的模型;
4.运用步骤3选出的模型对测试集计算得出推广误差
我们同样可以将训练集和交叉验证集模型的代价函数与λ的值绘制在一张图上。对于训练集、验证集和测试集的代价函数计算公式为:
需要注意的是,当计算训练集、交叉验证集和测试集误差时,不计算正则项,然后绘制出训练集和交叉验证集代价函数与λ值的关系,如下图所示:
1. 当λ较小时,训练误差较小(过拟合)而交叉验证集误差较大;
2. 随着λ的增加(从过拟合到欠拟合的过程),训练集误差逐渐增大(欠拟合),而交叉验证集误差则是先减小后增大。
学习曲线
学习曲线也是一种可以判断算法是否处于过拟合还是欠拟合的情况,学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图像。学习曲先不仅可以帮助我们是不是处于过拟合或者欠拟合,它还可以帮助我们判断是否为了提高算法的性能需要我们收集多的数据。
假设我们有100行数据,我们从第一行数据开始,逐渐增加数据进行训练,得到每次训练数据的代价函数值。当数据很少时,训练模型能够非常完美的拟合很少的数据,但是训练出的模型却不能泛化其他的数据,所以当数据很少时,训练集的代价函数很小,但是交叉验证集的代价函数很大,随着样本的增加,训练集的代价函数逐渐增大,交叉验证集的代价函数逐渐减小。绘制的曲线如下图所示:
1. 如何用学习曲线识别欠拟合:
假设我们的模型处于欠拟合的情况下,拟合曲线如下图所示:
我们可以看出,无论我们怎样增加样本数据,误差都不会有很大改观。同时在欠拟合的情况下,会出现随着样本的增加,训练集代价函数和交叉验证集代价函数都很大的情况,在这种情况下,就没有必要花费时间在收集数据上了,同时这也是一种判断模型是过拟合还是欠拟合的方法。
2. 如何使用学习曲线识别过拟合:
假设我们有一个非常高次的多项式模型(比如最高次项达到100次),并且正则化非常小时,从下图可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。
对于过拟合现象时,会出现训练集代价函数一直都很小(虽然是增加的趋势),但是验证集的损失函数会很大(虽然是减小的趋势),同时训练集代价函数和验证集代价函数相差会很大,可以使用这种方法来判断该模型处于过拟合阶段。
对于神经网络我们在讨论一下过拟合和欠拟合现象:
使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但是计算代价小;使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
对于 神经网络的模型选择 :我们一般选择较大的神经网络并采用正则化处理,而不会选择较小的神经网络。
对于 神经网络隐藏层的层数选择 ,一般我们从一层开始逐渐增加层数,为了更好的选择出最佳的层数,可以针对不同隐藏层层数的神经网络进行训练,然后选择交叉验证集代价函数最小的神经网络。
『伍』 神经网络欠拟合是不是每次输出结果都一样,称为欠拟合,都准确无误称为过拟合
欠拟合和过拟合都是没有明显界定范围的词, 类似于微辣,正常,变态辣一个意思.
和模型和鉴定标准都有关系
『陆』 BP神经网络可以用于拟合函数吗
可以。
既然是函数拟合,那么事先就已经有函数表达式了。拟合的只是函数表达式中未知的参数。用神经网络对函数进行拟合,输出的就是未知参数的高精近似值。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
(6)神经网络拟合扩展阅读:
如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。
一组观测结果的数字统计与相应数值组的吻合。形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。
在MATLAB中可以用polyfit 来拟合多项式。
拟合以及插值还有逼近是数值分析的三大基础工具,通俗意义上它们的区别在于:拟合是已知点列,从整体上靠近它们;插值是已知点列并且完全经过点列;逼近是已知曲线,或者点列,通过逼近使得构造的函数无限靠近它们。
『柒』 为什么神经网络能以任意精度拟合任意复杂度的函数
在开始之前,我们先来看一下维基网络给出的 万能近似定理(Universal approximation theorem) 描述:
Universal approximation theorem (Hornik et al., 1989;Cybenko, 1989) 定理表明:前馈神经网络,只需具备单层隐含层和有限个神经单元,就能以任意精度拟合任意复杂度的函数。这是个已经被证明的定理。下面我们用一种轻松的方式解释,为什么神经网络(理论上)可以拟合任何函数?
看过《神偷奶爸》这部电影的同学都知道,小黄人( Minions )非常喜欢吃香蕉。不过,现在它只有12个苹果,但它对苹果不感兴趣,想着如果谁能用香蕉换它的苹果就好了。不经意间,它发现了一个神奇的小屋。
小黄人向神奇小屋的窗户里放进一个苹果,神奇小屋什么也不会给它。小黄人又尝试向小屋的窗户里放进5个苹果,神奇小屋突然吐出16个香蕉!这下小黄人可高兴坏了。然后,小黄人又尝试扔给神奇小屋6个苹果,神奇小屋又吐出来20个香蕉。
现在,小黄人的12个苹果用完了,它抱着换来的香蕉想:如果我给它3个苹果,小屋会吐出来多少香蕉呢?
这是一道小学题(找规律),如何解答?
你可能脱口而出,8个香蕉!!OK,好吧,说明你的智商可以学习AI这么高深的学科了~
如何使用机器学习的步骤解答这道小学生做的题目呢(你可能觉得这是杀鸡用了宰牛刀)。
我们使用 变量 x 表示扔给神奇小屋的苹果数量( 输入input ),使用 变量 ŷ 表示神奇小屋吐出来的香蕉数量( 输出Output ),那么我们就得到了一个 数据集(Data set) :
我们的目标是,构建一个数学 模型(Model) ,使得该模型满足数据集的隐含规律。即,向模型输入 x 的值,模型会输出对应的 ŷ 值。
小学生应该学过一元函数(y = wx + b)。既然是小学题目,那么使用比较简单的函数应该就能模拟数据集的规律。所以我们定义了一个一元一次函数模型:
那么问题来了,我们怎样才能确定函数的两个 参数w,b ?
聪明的你可能又会脱口而出,是y = 4x + (-4) !!OK,你再次证明了你的智商已经超过小学生或者初中生。
但是小黄人没有你那么聪明,它只能猜。如果w=1, b=0,结果会是怎样?
很明显,模型的 输出(预测)值 y 与实际数据集中的 真实值 ŷ 相差很大。小黄人不满意,又随机猜了一次。w=2,b=2,结果又是怎样呢?
嗯,这次模型的输出值 y 与数据集中的真实值 ŷ 相差似乎不那么大了。小黄人就想,这两个候选模型,哪一个更好呢(更能模拟数据集中的规律)?如何将”更好“量化?
于是,我们引出 损失函数(lost function) 的概念。
将预测值 y 与真实值 ŷ 之间的差值平方和,作为“更好”的一种量化。损失函数越小, 即,预测值与真实值之间的差值越小,说明参数w,b越能模拟数据集中的规律。
有了损失函数,我们来看一看,上面两个候选模型的损失函数值各是多少。
模型 y = 2x + 2 的损失函数值L(2,2) = 68,小于L(1,0) = 318,所以候选模型y = 2x + 2胜出。
小黄人是一个追求极致的人。损失函数值68虽然小于318,但是它还是很大呀,有没有其他参数w,b使得损失函数L(w,b)的值比68还小。
所以,我们又引出了 优化器(Optimizer) 的概念。
想办法找出使得损失函数值L(w,b)最小的参数w,b。由于小黄人没有学过梯度下降法(一种凸函数优化算法,不懂也没关系,现在用不到),所以它只能使用....”随机尝试法“。
小黄人从参数w=2,b=2,开始,以步长为1进行随机尝试。即,在“加一减一”的范围内,尝试坐标点(2,2)周围的四个点 : (3,2)、(2,3)、(1,2)、(1,1)。结果发现,在点(3,2)处,损失函数值小于其他三个点和原先点处的损失值。
所以,小黄人发现了一个更好的候选模型 y = 3x + 2,其损失函数值为26,比68小的多。小黄人,很兴奋,用同样的方式又开始了尝试。以此类推,它接着发现了L(3,1) =17、L(3,0) =14 两个坐标点。然而,在点(3,0)周围的尝试,都没有发现比14更小的损失函数值。
这样就结束了吗?
高智商的你,一定能想到,在点(4,-4)处,损失函数值最小:L(4,-4) =0。但是,用上述尝试方法并不能找到坐标点(4, -4)。
问题出在了哪儿?是初始点选择的问题。
小黄人发现,如果从坐标点(-2,-4)开始上述方式的尝试,最终会找到使得损失函数最小的(4,-4)点。如果深入研究,将涉及到最优搜索问题,超出本片文章的范围。
我们当前只需知道,能够通过最优方法(如,最小二乘法),找到使得损失函数最小的模型参数w,b。
上面这个故事就是线性回归??
我们需要给出一个稍微严谨点的定义,来说明什么是线性回归。下面是《机器学习》(周志华著)中给出的一句话:
将这句话对应到我们的模型中。模型函数 y = 4x - 4 就是句中学得的“线性模型”。然后,在我们的故事中,不是尽可能准确地预测真实值输出标记,而是百分百预测了真实值输出标记....损失函数值能够达到最小0。
其实,没那么简单......我们稍微扩展一下。
有一天,小黄人发现,如果给神奇小屋1个苹果、2个香蕉、3个梨,神奇小屋就会吐给它一只猫咪~ 喵喵喵~。真的太神奇了。。。。
这时,模型函数不再是简单的一元函数,而是三元函数,有三个输入变量 (x1, x2, x3),和4个参数 (w1, w2, w3, b) 需要优化。我们将这种情况称之为“ 多元线性回归(multivariate linear regression) ”。其实这是图像识别的原型模型,我们不再深入探讨。
当小黄人发现了神奇小屋交换香蕉的规律后,非常非常高兴。它又找来了好多苹果,准备和神奇小屋交换香蕉。可是....生活就是这样。在你最得意的时候,往往会给你浇一盆凉水。
(注,这里将之前的数据集调整了一下,由x=1,5,6改为x=1,2,3。方便画图啦)
小黄人又尝试给神奇小屋4个和5个苹果,结果分别得到9个和10个香蕉。似乎哪里有点不对??!如果按照之前发现的规律,应该分别得到12和20个香蕉呀。小黄人,百思不得其解。
这时,神奇小屋吐出来一张纸条,上面写着:如果你扔进来的苹果太多,我给你的香蕉将会减少。小黄人,有点郁闷。
如果按照之前一元函数的方式建模,将会得到如下函数模型。
你可能比小黄人聪明多了,一眼就看出来上面的模型函数好像不太合适。损失函数永远取不到最小值0。
如果模型函数是这样就好了,那么对应的损失函数值将会取到最小值0。可是,这好像是两个模型函数。一山不容二虎,能不能将这两个函数合成一个函数。
这时,你又脱口而出,分段函数!!事实证明,你的智商已经达到高中生水平。
当 x < 3 时,s1 等于1,s2 等于0,函数 y = 4x - 4;
当 x >= 3 时,s1 等于0,s2 等于1,函数 y=1x + 5;
这才是完美的组合函数。
那么,问题又来了。s1和s2是什么?怎么确定?
如果把s2看成函数,那么理想情况下,应该是这样的阶跃函数。
然而阶跃函数具有不连续、不光滑等不太好的性质。
这时,小黄人悠悠地说,我好像见过一个跟这个函数有点像的连续函数,叫Sigmoid函数。
看到这个Sigmoid函数后,你很生气。对着小黄人说:人笨就少说话,这个函数和阶跃函数,哪里相像了,差的也太远吧!!怎么看怎么不像。
小黄人:你给变量t一个参数不就行了,改成σ(1000t)。(抠鼻)
如果不仔细看,几乎看不出在纵轴0到1之间,有个非常陡峭的曲线。你顿时无语,对小黄人刮目相看。
当 x = 0.1 时,s = σ(100) ≈ 1;
当 x = - 0.1 时,s = σ(100) ≈ 0;
稍微对这个Sigmoid函数做些调整,就能得到我们需要的各种阶跃函数。
这样的话,我们就得到了新的模型函数,y = (4x - 4)σ(-1000x + 3000)+ (1x + 5)σ(1000x - 3000);
如,当 x = 4 时, y = (12) σ(-1000) + (9)σ(1000) = 12*0 + 9*1 = 9,与数据集相符。
在这个过程中,小黄人还是有功劳的,提出了激活函数的概念。
下面我们看一下稍微严谨点的逻辑回归定义。
这一句话就够了。在第一节中我们已经学习线性回归模型 y = wx + b。观察图,能够发现,逻辑回归其实就是在线性回归的结果上在再使用一次激活函数 y = σ(wx + b)。线性回归模型 (y = wx + b) 的预测值y可以是一个任意实数{-∞, ∞},而逻辑回归模型 (y = σ(wx + b)) 的预测值y只能是{0, 1}之间的实数。如果能够搞明白线性回归与逻辑回归的联系,说明你已经掌握两者的本质含义。
小黄人想,虽然给的香蕉数量少了些,最起码小屋吐出来的香蕉比扔进去的苹果多嘛。于是,小黄人又尝试向神奇小屋里扔进去了7个和9个苹果。
结果,神奇小屋两次都只返还出来10个香蕉。这下小黄人傻眼了。
虽然小黄人在其他事情上比较笨,但是只要与香蕉相关,它可精明的多。刚刚5个苹果就能换10个香蕉,现在9个苹果才能换10个香蕉!!明显自己吃亏了。但是,它又非常不喜欢吃苹果,只能强忍怨气,攒着一股劲,一定要把里面的规律找出来。
经过之前的套路,机智的你,一定能想到解决办法。
对,就是这样。将数据集分成三块,分别构建线性模型函数,然后利用激活函数,组合起来。
问题再次出现。
当 x < 3 时,s1 = σ(-1000x + 3000) = 1,其他情况为0;
当 x >= 5 时,s3 = σ(1000x - 5000) = 1,其他情况为0;
当 3 <= x < 5 时,s2 = ??
不知道聪明的你有没有注意到,函数 s1 和 s3 都是以 x 作为未知变量。如果我们转换一下思路,将 s2 看成是 s1 和 s3的二元函数。即,s2是否等于1或0,由 s1 和 s2 的值决定。
s2 = σ(-1000s1 - 1000s2 + 500)
虽然得到的香蕉数目不再增加,但是这么复杂的问题都能解决掉(使用线性回归和逻辑回归相结合,对数据集建模),小黄人还是有点小高兴。反正它手里还有些苹果,于是它又尝试向神奇小屋里丢进去了10、11、12个苹果。结果...小黄人崩溃了!!
神奇小屋传出来纸条说:做人不能贪得无厌,要见好就收,知足常乐。小黄人崩溃了。现在只留下一个未被解决的难题----怎么对数据集进行建模。
即使你很聪明,似乎也只能解决其中的两步。
取 s1 = σ(-1000x + 3000),即,当 x < 3 时,s1 = 0;
取 s4 = σ(1000x - 9000),即,当 x >= 9 时,s4 = 0;
那么 s1 和 s2 该如何确定?
根据之前的经验,你大致可以确定s1和s2应该由s1和s4的值确定。
后续......
假设现在我们有许多数据集,
梳理一下流程
重点来了
免喷声明:本文借鉴(chao xi) 牛津大学xDeepMind 自然语言处理 公开课