cross-entropy函数

我们理想情况是让神经网络学习更快

假设简单模型: 只有一个输入,一个神经元,一个输出

简单模型: 输入为1时, 输出为0


初始 w = 0.6, b = 0.9   初始预测的输出 a = 0.82, 需要学习
学习率: 0.15

演示: 




初始: w = 2.0, b = 2.0, 初始预测输出: 0.98, 和理想输出0差点很远
演示:



神经网络的学习行为和人脑差的很多, 开始学习很慢, 后来逐渐增快.

为什么?

学习慢 => 偏导数 ∂C/∂w 和 ∂C/∂b 值小

计算偏导数:

回顾之前学习的Cost函数:
对于一个x, y 和单个神经元:
分别对w和b求偏导数:

  x = 1, y = 0


回顾sigmoid函数

 当神经元输出接近1时, 曲线很平缓, 
=>
 很小, 所以学习很慢

如何增快学习?

介绍cross-entropy cost 函数

假设一个稍微复杂一些的神经网络


    
定义cross-entropy函数:


为什么可以用来做cost函数?
1.  函数值大于等于0 (验证)
2.  当a=y时, cost = 0





用sigmoid函数定义

推出:


 代入 上面的偏导, 得到:


学习的快慢取决于 

也就是输出的error

好处: 错误大时,更新多,学得快. 错误小时,学习慢


对于偏向也类似:

用cross-entropy 演示:

w = 0.6, b = 0.9


w = 2.0, b = 2.0

与之前的二次cost比较
学习率=0.005, 但是不是重点, 主要是速度的变化率, 也就是曲线的形状不同. 

以上是对于一个单个神经元的cost, 对于多层:

以上把输出层所有的神经元的值加起来

总结:

cross-entropy cost几乎总是比二次cost函数好

如果神经元的方程是线性的, 用二次cost函数 (不会有学习慢的问题)






### Binary Cross-Entropy Loss (BCELoss) 的定义 Binary Cross-Entropy Loss 是一种用于二分类问题的损失函数,在机器学习领域广泛应用。该损失函数衡量的是预测概率分布与真实标签之间的差异程度。对于单个样本而言,如果 \( y \in {0, 1} \),则 BCE 可表示为: \[ L(y,\hat{y})=-\left[y\log(\hat{y})+(1-y)\log(1-\hat{y})\right] \] 其中 \( y \) 表示真实的类别标签(0 或者 1),\( \hat{y} \) 则代表模型给出的概率估计值。 当处理多个训练样例时,则通常会计算所有样例上的平均损失作为最终的目标函数来优化[^4]。 ### 使用场景 此损失函数特别适用于那些输出可以被解释为某个事件发生的概率的任务中,比如垃圾邮件检测、广告点击率预估等。它能够有效地惩罚错误分类的情况,并且随着预测值接近实际值而逐渐减小。 ### 实现例子 下面是一个简单的 Python 函数实现 binary cross entropy loss 计算过程: ```python import numpy as np def bce_loss(y_true, y_pred): """ Compute the binary cross-entropy loss between true labels and predicted probabilities. Args: y_true: Array-like structure containing actual class labels (either 0 or 1). y_pred: Array-like structure with corresponding probability estimates from model output. Returns: float: The computed average binary cross-entropy across all samples. """ epsilon = 1e-7 # To prevent log(0) y_pred_clipped = np.clip(y_pred, epsilon, 1 - epsilon) losses = -(y_true * np.log(y_pred_clipped) + (1 - y_true) * np.log(1 - y_pred_clipped)) return np.mean(losses) ``` 上述代码实现了对给定的真实标签 `y_true` 和预测概率 `y_pred` 进行 binary cross entropy loss 的计算,并返回这些样本上损失值得均值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值