推广 热搜: 收购ACF  石英加热管,  800  T型槽试验平台  深圳回收ACF  求购ACF  T型槽装配平台  回收ACF  求购日立ACF  T型槽地梁 

代价函数 、代价函数和目标函数

   日期:2023-04-16     浏览:45    评论:0    
核心提示:神经网络里面的代价函数是什么意思?下面是就是神经网络中代价函数J(Θ)J(Θ)的表达式,看起来还是稍微有点复杂。这个表达式到底在计算什么?下面我们先用一个简单的例子来分开一步步计算一下。J(Θ)=−1

神经网络里面的代价函数是什么意思?

下面是就是神经网络中代价函数J(Θ)J(Θ)的表达式,看起来还是稍微有点复杂。这个表达式到底在计算什么?下面我们先用一个简单的例子来分开一步步计算一下。

J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2J(Θ)=−1m∑i=1m∑k=1K[yk(i)log⁡((hΘ(x(i)))k)+(1−yk(i))log⁡(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θj,i(l))2

有如下神经网络:

其中:

LslK=神经网络总共包含的层数=第l层的神经元数目=输出层的神经元数,亦即分类的数目L=神经网络总共包含的层数sl=第l层的神经元数目K=输出层的神经元数,亦即分类的数目

假设s1=3,s2=2,s3=3s1=3,s2=2,s3=3,则Θ1Θ1的维度为2×42×4,Θ2Θ2的维度为3×33×3。

则有:

XT=⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥,Θ1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4,Θ2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3XT=[1x1x2x3],Θ1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4,Θ2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3

先回忆一下正向传播的计算公式: 

z(j)=Θ(j−1)a(j−1)……(1)a(j)=g(z(j)),setting a(j)0=1……(2)hΘ(x)=a(j)=g(z(j))……(3)z(j)=Θ(j−1)a(j−1)……(1)a(j)=g(z(j)),setting a0(j)=1……(2)hΘ(x)=a(j)=g(z(j))……(3)

详解戳此处 

此时我们先忽略 regularized term 

①当m=1时; 

J(Θ)=−1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]J(Θ)=−1m∑k=1K[yk(i)log⁡((hΘ(x(i)))k)+(1−yk(i))log⁡(1−(hΘ(x(i)))k)]

1.令a1=XT;⟹z2=Θ1∗a1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4×⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥=[θ110+θ111⋅x1+θ112⋅x2+θ113⋅x3θ120+θ121⋅x1+θ122⋅x2+θ123⋅x3]2×11.令a1=XT;⟹z2=Θ1∗a1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4×[1x1x2x3]=[θ101+θ111⋅x1+θ121⋅x2+θ131⋅x3θ201+θ211⋅x1+θ221⋅x2+θ231⋅x3]2×1

=[z21z22],⟹a2=g(z2);=[z12z22],⟹a2=g(z2);

2.给a2添加偏置项,并计算a3即hθ(x) 2.给a2添加偏置项,并计算a3即hθ(x); 

a2=⎡⎣⎢1a21a22⎤⎦⎥;⟹z3=Θ2∗a2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3×⎡⎣⎢1a21a22⎤⎦⎥=⎡⎣⎢⎢z31z32z33⎤⎦⎥⎥;a2=[1a12a22];⟹z3=Θ2∗a2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3×[1a12a22]=[z13z23z33];

⟹hθ(x)=a3=g(z3)=⎡⎣⎢⎢g(z31)g(z32)g(z33)⎤⎦⎥⎥=⎡⎣⎢h(x)1h(x)2h(x)3)⎤⎦⎥⟹hθ(x)=a3=g(z3)=[g(z13)g(z23)g(z33)]=[h(x)1h(x)2h(x)3)]

此时我们知道,对于每一个example,最终都会输出3个结果,那么这时代价函数所做的就是将这3个输出取对数然后乘以对应的预期期望值y之后,再累加起来。具体如下:

假设 input:XT=⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥;output:y=⎡⎣⎢100⎤⎦⎥=⎡⎣⎢y1y2y3⎤⎦⎥input:XT=[1x1x2x3];output:y=[100]=[y1y2y3]

则有: 

J(Θ)∗m=[−y1×log(h(x)1)−(1−y1)×log(1−h(x)1)]+[−y2×log(h(x)2)−(1−y2)×log(1−h(x)2)]+[−y3×log(h(x)3)−(1−y3)×log(1−h(x)3)]=[−1×log(h(x)1)−(1−1)×log(1−h(x)1)]+[−0×log(h(x)2)−(1−0)×log(1−h(x)2)]+[−0×log(h(x)3)−(1−0)×log(1−h(x)3)]=−log(h(x)1)−log(1−h(x)2)−log(1−h(x)3)J(Θ)∗m=[−y1×log(h(x)1)−(1−y1)×log(1−h(x)1)]+[−y2×log(h(x)2)−(1−y2)×log(1−h(x)2)]+[−y3×log(h(x)3)−(1−y3)×log(1−h(x)3)]=[−1×log(h(x)1)−(1−1)×log(1−h(x)1)]+[−0×log(h(x)2)−(1−0)×log(1−h(x)2)]+[−0×log(h(x)3)−(1−0)×log(1−h(x)3)]=−log(h(x)1)−log(1−h(x)2)−log(1−h(x)3)

在matlab中,矢量化之后的代价函数为: 

J(Θ)=(1/m)∗(sum(−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)));J(Θ)=(1/m)∗(sum(−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)));

②当m1时;

J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]J(Θ)=−1m∑i=1m∑k=1K[yk(i)log⁡((hΘ(x(i)))k)+(1−yk(i))log⁡(1−(hΘ(x(i)))k)]

此时,对于每一个example都会产生一个上面的代价,所以只需要把所有的对于每一个example产生的代价累加起来即可。

再来分解一下:

假设,X=⎡⎣⎢⎢111x11x21x31x12x22x32x13x23x33⎤⎦⎥⎥,假设,X=[1x11x21x311x12x22x321x13x23x33],

1.令a1=XT;⟹z2=Θ1∗a1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4×⎡⎣⎢⎢⎢⎢1x11x12x131x21x22x231x31x32x33⎤⎦⎥⎥⎥⎥4×3=1.令a1=XT;⟹z2=Θ1∗a1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4×[111x11x12x13x21x22x23x31x32x33]4×3=

[θ110+θ111⋅x11+θ112⋅x12+θ113⋅x13θ120+θ121⋅x11+θ122⋅x12+θ123⋅x13θ110+θ111⋅x21+θ112⋅x22+θ113⋅x23θ120+θ121⋅x21+θ122⋅x22+θ123⋅x23θ110+θ111⋅x31+θ112⋅x32+θ113⋅x33θ120+θ121⋅x31+θ122⋅x32+θ123⋅x33]2×3[θ101+θ111⋅x11+θ121⋅x21+θ131⋅x31θ101+θ111⋅x12+θ121⋅x22+θ131⋅x32θ101+θ111⋅x13+θ121⋅x23+θ131⋅x33θ201+θ211⋅x11+θ221⋅x21+θ231⋅x31θ201+θ211⋅x12+θ221⋅x22+θ231⋅x32θ201+θ211⋅x13+θ221⋅x23+θ231⋅x33]2×3

=[z211z221z212z222z213z223]2×3,⟹a2=g(z2);=[z112z122z132z212z222z232]2×3,⟹a2=g(z2);

2.给a2添加偏置项,并计算a3即hθ(x) 2.给a2添加偏置项,并计算a3即hθ(x);

a2=⎡⎣⎢1a211a2211a212a2221a213a223⎤⎦⎥3×3;⟹z3=Θ2∗a2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3×⎡⎣⎢1a211a2211a212a2221a213a223⎤⎦⎥3×3a2=[111a112a122a132a212a222a232]3×3;⟹z3=Θ2∗a2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3×[111a112a122a132a212a222a232]3×3

⟹hθ(x)=a3=g(z3)=⎡⎣⎢⎢g(z311)g(z321)g(z331)g(z312g(z322g(z332)g(z313))g(z323))g(z333)⎤⎦⎥⎥⟹hθ(x)=a3=g(z3)=[g(z113)g(z123g(z133))g(z213)g(z223g(z233))g(z313)g(z323)g(z333)]

=⎡⎣⎢⎢⎢⎢m=1时每个example对应的所有输出;h(x1)1h(x1)2h(x1)3m=2时h(x2)1h(x2)2h(x2)3m=3时;h(x3)1h(x3)2h(x3)3⎤⎦⎥⎥⎥⎥=[m=1时每个example对应的所有输出;m=2时m=3时;h(x1)1h(x2)1h(x3)1h(x1)2h(x2)2h(x3)2h(x1)3h(x2)3h(x3)3]

假设 input:X=⎡⎣⎢⎢111x11x21x31x12x22x32x13x23x33⎤⎦⎥⎥;output:y=⎡⎣⎢122⎤⎦⎥=⎡⎣⎢y1y2y3⎤⎦⎥input:X=[1x11x21x311x12x22x321x13x23x33];output:y=[122]=[y1y2y3]

该例子的背景为用神经网络识别手写体,即y1=1表示期望输出为1,y2=y3=2,表示其期望输出为2。在计算代价函数的时候要将其每一个对应的输出转换为只含有0,1的向量y1=1表示期望输出为1,y2=y3=2,表示其期望输出为2。在计算代价函数的时候要将其每一个对应的输出转换为只含有0,1的向量

则有: 

y1=⎡⎣⎢100⎤⎦⎥;y2=⎡⎣⎢010⎤⎦⎥;y3=⎡⎣⎢010⎤⎦⎥⟹labelY=⎡⎣⎢⎢⎢m=1100m=2010m=3010⎤⎦⎥⎥⎥y1=[100];y2=[010];y3=[010]⟹labelY=[m=1m=2m=3100011000]

对于如何将普通的输出值转换成只含有0,1的向量,戳此处

则有(Malab中的矢量化形式): 

J(Θ)=(1/m)∗(sum(sum[−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)]));J(Θ)=(1/m)∗(sum(sum[−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)]));

加上 regularized term 

regular=λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2;regular=λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θj,i(l))2;

其实regularized term 就是所有每一层的参数(Θlj,i,j≠0,即除了每一层的***列偏置项所对应的参数)(Θj,il,j≠0,即除了每一层的***列偏置项所对应的参数)的平方和相加即可。

具体到本文的例子就是:

Θ1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4,Θ2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3Θ1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4,Θ2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3

regular=(θ111)2+(θ112)2+(θ113)2+(θ121)2+(θ122)2+(θ123)2+(θ211)2+(θ212)2+(θ221)2+(θ222)2+(θ231)2+(θ232)2regular=(θ111)2+(θ121)2+(θ131)2+(θ211)2+(θ221)2+(θ231)2+(θ112)2+(θ122)2+(θ212)2+(θ222)2+(θ312)2+(θ322)2

Matlab中矢量化为:

s_Theta1 = sum(Theta1 .^ 2);%先求所有元素的平方,然后再每一列相加

r_Theta1 = sum(s_Theta1)-s_Theta1(1,1);%减去***列的和

s_Theta2 = sum(Theta2 .^ 2);

r_Theta2 = sum(s_Theta2)-s_Theta2(1,1);

regular = (lambda/(2*m))*(r_Theta1+r_Theta2);

代价函数

而***解即为代价函数的最小值,根据以上公式多次计算可得到

代价函数的图像:

可以看到该代价函数的确有最小值,这里恰好是横坐标为1的时候。

如果更多参数的话,就会更为复杂,两个参数的时候就已经是三维图像了:

高度即为代价函数的值,可以看到它仍然有着最小值的,而到达更多的参数的时候就无法像这样可视化了,但是原理都是相似的。

因此,对于回归问题,我们就可以归结为得到代价函数的最小值:

3、为什么代价函数是这个呢

首先思考:什么是代价?

简单理解代价就是预测值和实际值之间的差距,那对于多个样本来说,就是差距之和。

如果我们直接使用

,这个公式看起来就是表示假设值和实际值只差,再将每一个样本的这个差值加起来不就是代价了吗,但是想一下,如果使用这个公式,那么就单个样本而言,代价有正有负,全部样本的代价加起来有可能正负相抵,所以这并不是一个合适的代价函数。

所以为了解决有正有负的问题,我们使用这里写图片描述,即绝对值函数来表示代价,为了方便计算最小代价(计算最小代价可能用到最小二乘法),我们直接使用平方来衡量代价,即使用这里写图片描述来表示单个样本的代价,那么一个数据集的代价为:这里写图片描述。

那么是否使用平方之和就没有什么问题了?

仔细想想,其实很容易想到,代价函数应该与样本的数量有关,否则一个样本和n个样本的差距平方和之间的比较也没有多少意义,所以将这里写图片描述乘以这里写图片描述,即代价函数为:这里写图片描述,这里取2m而非m,是为了方便计算。

损失函数和代价函数一样吗

损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(***化的不叫损失或代价函数)。

在slam中

损失函数(Lossfunction residual)

损失函数是你的误差函数,是观测数据与估计值的差,

代价函数(Costfunction)

代价函数类似于核函数?那什么是核函数?剔除外点

比如在优化的时候,由于无匹配等原因,把原本不应该加到图中的边给加进去了,误差大的边梯度也大,意味着调整与它相关的变量会使目标函数下降更多。所以当误差很大时,二范数增长得太快,二核函数保证每条边的误差不会大得没边而掩盖掉其他的边。具体是将原先误差的二范数度量替换成一个增长没那么快的函数,同时保证光滑性(不然没法求导),使优化结果更加稳健,所以又叫鲁棒核函数。常见的Huber核函数。

ceres中的核函数用来减小Outlier的影响,对应g2o中的edge-setRobustKernel()。

深度学习的核函数:

一般定义是将原始表达转换到一个隐式特征空间去,该空间具有更好的特征可分性质。

在普通优化问题中,为了抑制outlier对结果影响太大,往往需要加一个核函数,来***止或降低那些离散点对最终结果的影响。

在机器学习中,(一层线性卷积结构+一层核函数)*N的特殊结构,能拟合任何函数的原因。但如果只有N层的线性结构,那最后的组合还是线性结构,就相当于以前的感知机(perceptron)。使得类似神经网络结构从线性变成非线性的,就是每一层后加的核函数/激活函数。

从上边我们可以看出,核函数的作用,是将原始结果空间映射到一个新的输出空间,在这个映射过程中可以进行滤波,转换后的空间具有更好的特征可分性质。

代价函数(Cost function)

假设函数:

这样代价函数,是非凸函数,如果使用梯度下降,几乎不能收敛到最全局最小值,所以我们需要寻找其他的是凸函数的代价函数,这样就可以使用之前学过的算法了。

(这里有一门知识,凸性分析,凸优化)

代价函数

可以这样做是因为y要么是1,要么是0。

当假设h(θ)=1时,如果y是1,那么cost=0;如果y=0,那么cost=∞。

当假设h(θ)=0时,如果y时1,那么cost=∞;如果y=0,那么cost=0。

代价函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于代价函数和目标函数、代价函数的信息别忘了在本站进行查找喔。

原文链接:http://www.souke.org/news/show-36628.html,转载和复制请保留此链接。
以上就是关于代价函数 、代价函数和目标函数全部的内容,关注我们,带您了解更多相关内容。
 
打赏
 
更多>同类资讯
0相关评论

推荐资讯
网站首页  |  VIP套餐介绍  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  SITEMAPS  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报