首页 > 其他分享 >手搓交叉熵损失函数

手搓交叉熵损失函数

时间:2024-01-18 09:47:13浏览次数:20  
标签:prime frac 函数 交叉 cdot 损失 aligned sigma log

1 交叉熵损失函数

\[\begin{aligned} L_{\mathrm{CE}}(\hat{y},y)& =-\log p(y|x)~=~-[y\log\hat{y}+(1-y)\log(1-\hat{y})] \\ &=-[y\log\sigma(w\cdot x+b)+(1-y)\log{(1-\sigma(w\cdot x+b))}] \end{aligned} \]

2 对权重 \(w_j\) 求梯度

令 \(z = w \cdot x + b\) 得

\[\begin{aligned} \frac{\partial L_{CE}(\hat {y},y)}{\partial w_j}& =\left.-\left(\frac y{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right)\frac{\partial\sigma}{\partial w_j}\right. \\ &=-\left(\frac y{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right)\sigma^{\prime}(z)x_j \\ &=\frac{\sigma^{\prime}(z)x_j}{\sigma(z)(1-\sigma(z))}(\sigma(z)-y) \\ &=x_j(\sigma(z)-y) \end{aligned} \]

其中

\[\sigma^{\prime}(z)=\sigma(z)(1-\sigma(z)) \]

证明如下:

\[\begin{aligned} \sigma^{\prime}(z)& =(\frac1{1+e^{-z}})^{\prime} \\ &=(-1)(1+e^{-z})^{(-1)-1}\cdot(e^{-z})^{\prime} \\ &=\frac{1}{\left(1+e^{-z}\right)^{2}}\cdot(e^{-z}) \\ &=\frac{1}{1+e^{-z}}\cdot\frac{e^{-z}}{1+e^{-z}} \\ &=\frac{1}{1+e^{-z}}\cdot(1-\frac{1}{1+e^{-z}}) \\ &=\sigma(z)(1-\sigma(z)) \end{aligned} \]

最近考试,后期会补充细节,倘若大佬发现错误,敬请斧正,感谢感谢!

标签:prime,frac,函数,交叉,cdot,损失,aligned,sigma,log
From: https://www.cnblogs.com/W-ayang/p/17971791

相关文章

  • Bessel 函数的一些性质
    泊松(Poisson)积分表达式:\[J_\nu\left(z\right)=\dfrac{\left(z/2\right)^\nu}{\sqrt{\pi}\Gamma\left(\nu+1/2\right)}\int_0^{\pi}\cos\left(z\cos\theta\right)\sin^{2\nu}\theta\mathrm{d}\theta\left(\mathrm{Re}\left(\nu\right)\gt-\dfrac......
  • 函数2
    函数参数传递的问题传递的是地址值还是数值呢?deffun1(a1):print(a1)name='xiaohu'fun1(name)python中函数的调用参数传递的是地址值========================deffun1(a1):a1.append(666)list1=[1,2,3]fun1(list1)print(list1)==========================de......
  • 函数练习1
    练习:定义一个函数,函数接收2个参数,第一个参数是一个大字符串,第二个参数是一个字符,函数功能是判断该字符在大字符串中出现的次数defget_str_count(big_str,s):count=0foriinbig_str:ifi==s:count+=1print(f'{s}字符在大字符串中共出现了{count}次。。')get_str_count(......
  • 函数
    语句定义格式:def函数名(..):代码块调用函数函数名(..)函数名(..)定义defprint_info():print('dyj大sb')print(666)a1=10b1=11c1=a1+b1print(c1)调用print_info()importfileinputimporttime编写函数的注意事项函数的名字,尽量使用小写英文单词,使用下划线拼......
  • 函数作用域(二)
    '''作用域:变量的作用范围全局变量:定义在函数外部的变量局部变量:定义在函数内部的变量函数内部可以访问全局变量,但是不能直接修改如果要修改全局变量,需要借助关键字global声明函数内部用global修改了全局变量那么全局变量已经被修改了'''n=100deffunc():globaln#声明全......
  • 【学习笔记】数论函数与莫比乌斯反演
    一.数论函数基础数论函数:满足值域为整数的函数。本文下述的数若无特殊说明均为整数。若无特殊说明则钦定\(\displaystylen=\prod_{i=1}^kp_i^{e_i},p_i\in\mathbb{P}\)。\(\mathbb{P}\)表示质数集合,\(p_i\)互不相同。介绍几个常见的数论函数:\(I(n)\):恒等函数,无论\(n\)......
  • 无涯教程-SQL Numeric Functions函数
    SQL数字函数主要用于数字操作和/或数学计算。下表详细介绍了数字函数-Sr.No.Function&描述1ABS()返回数值表达式的绝对值。2ACOS()返回数值表达式的反余弦值。如果该值不在-1到1之间,则返回NULL。3ASIN()返回数字表达式的反正弦值。如果值不在-1到1的范围内,则返......
  • C++中setw和setfill函数的结合应用
    一、头文件头文件为#include<iomanip>其中io代表输入输出,manip是manipulator(操纵器)的缩写iomanip的作用:主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样。二、setw函数s......
  • 无涯教程-SQL RAND Function函数
    SQL具有RAND函数,可以调用该函数以生成介于0和1之间的随机数-SQL>SELECTRAND(),RAND(),RAND();+------------------+-----------------+------------------+|RAND()|RAND()|RAND()|+------------------+-----------------+-----......
  • 无涯教程-SQL SUM Function函数
    SQLSUM函数用于查找各种记录中一个字段的总和。要了解SUM函数,请考虑一个employee_tbl表,该表具有以下记录-SQL>SELECT*FROMemployee_tbl;+------+------+------------+--------------------+|id|name|work_date|daily_typing_pages|+------+------+---......