神经网络 代价函数

神经网络 代价函数

首先引入一些便于稍后讨论的新标记方法:

假设神经网络的训练样本有 m m m个,每个包含一组输入 x x x和一组输出信号 y y y L L L表示神经网络层数, S I S_I SI表示每层的neuron个数( S l S_l Sl表示输出层神经元个数), S L S_L SL代表最后一层中处理单元的个数。

将神经网络的分类定义为两种情况:二类分类和多类分类,

二类分类: S L = 0 , y = 0   o r   1 S_L=0, y=0\, or\, 1 SL=0,y=0or1表示哪一类;

K K K类分类: S L = k , y i = 1 S_L=k, y_i = 1 SL=k,yi=1表示分到第 i i i类; ( k > 2 ) (k>2) (k>2)

在这里插入图片描述

我们回顾逻辑回归问题中我们的代价函数为:

J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta) = -\frac{1}{m} \left[\sum_{i=1}^{m}y^{(i)}\log{h_\theta(x^{(i)})} + (1 - y^{(i)})\log\left(1 - h_\theta(x^{(i)})\right)\right] + \frac{\lambda}{2m}\sum_{j=1}^{n}\theta_j^2 J(θ)=m1[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2

在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量 y y y,但是在神经网络中,我们可以有很多输出变量,我们的 h θ ( x ) h_\theta(x) hθ(x)是一个维度为 K K K的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为: \newcommand{\subk}[1]{ #1_k }
h θ ( x ) ∈ R K h_\theta\left(x\right)\in \mathbb{R}^{K} hθ(x)RK ( h θ ( x ) ) i = i t h output {\left({h_\theta}\left(x\right)\right)}_{i}={i}^{th} \text{output} (hθ(x))i=ithoutput

J ( Θ ) = − 1 m [ ∑ i = 1 m ∑ k = 1 K y k ( i ) log ⁡ ( h Θ ( x ( i ) ) ) + ( 1 − y k ( i ) ) log ⁡ ( 1 − h Θ ( x ( i ) ) ) ] + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( Θ j i ( l ) ) 2 J(\Theta) = -\frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{k=1}^{K} y_k^{(i)} \log (h_\Theta(x^{(i)})) + \left( 1 - y_k^{(i)} \right) \log \left( 1 - h_\Theta \left( x^{(i)} \right) \right) \right] + \frac{\lambda}{2m} \sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{l+1}} \left( \Theta_{ji}^{(l)} \right)^2 J(Θ)=m1[i=1mk=1Kyk(i)log(hΘ(x(i)))+(1yk(i))log(1hΘ(x(i)))]+2mλl=1L1i=1slj=1sl+1(Θji(l))2

这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出 K K K个预测,基本上我们可以利用循环,对每一行特征都预测 K K K个不同结果,然后在利用循环在 K K K个预测中选择可能性最高的一个,将其与 y y y中的实际数据进行比较。

正则化的那一项只是排除了每一层 θ 0 \theta_0 θ0后,每一层的 θ \theta θ 矩阵的和。最里层的循环 j j j循环所有的行(由 s l + 1 s_{l+1} sl+1 层的激活单元数决定),循环 i i i则循环所有的列,由该层( s l s_l sl层)的激活单元数所决定。即: h θ ( x ) h_\theta(x) hθ(x)与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularizationbias项处理所有参数的平方和。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
神经网络代价函数,也称为损失函数,用于衡量模型预测结果与实际标签之间的差异。常见的代价函数有均方误差(Mean Squared Error)和交叉熵(Cross Entropy)。 下面我以交叉熵代价函数为例进行推导。 假设我们有一个神经网络,输入样本为 x,对应的标签为 y。设模型的输出为 a,表示网络对样本 x 的预测结果。交叉熵代价函数可以定义为: \[ J(a, y) = -\frac{1}{m} \sum_{i=1}^{m} \sum_{j=1}^{n} y_{ij} \log(a_{ij}) \] 其中,m 表示样本数量,n 表示标签类别数量。 首先,我们需要将标签 y 进行 one-hot 编码。即将每个标签转换为一个长度为 n 的向量,其中只有对应类别的位置为 1,其余位置为 0。例如,如果第 i 个样本的标签是类别 j,则 y_ij = 1,其他位置都为 0。 然后,我们可以使用 softmax 函数将模型的输出 a 转换为概率分布。softmax 函数的定义如下: \[ \sigma(z)_{ij} = \frac{e^{z_{ij}}}{\sum_{k=1}^{n} e^{z_{ik}}} \] 其中,z 是预测结果经过一个线性变换后的输出,可以看作是未经过激活函数的结果。σ 表示 softmax 函数。 通过 softmax 函数,我们将模型的输出 a 转换为概率分布,表示每个类别的预测概率。 接着,我们可以使用交叉熵代价函数来衡量网络预测结果与实际标签之间的差异。交叉熵代价函数的定义如上所示。 最后,我们可以通过反向传播算法来求解代价函数对于模型参数的梯度,进而更新参数以减小代价函数的值。 希望以上推导对你有所帮助!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小程序○

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值