首页 > 其他分享 >有关损失函数推导

有关损失函数推导

时间:2022-09-21 19:45:37浏览次数:93  
标签:frac 函数 推导 损失 pmb theta sigma partial log

损失函数推导

线性回归

首先损失函数是为了衡量模型预测的数据与真实数据之间的区别,那么问题来了为什么是平方损失,而不是绝对值损失,四次方损失。

一个很浅显的理解:二次方简单,导数是线性的且连续,而且离预测值远的值会被放大。

推导

假设模型已被训练到最佳,这时候与真实值必然会存在一些误差。比如房子供应商的心情突然好了,进行促销。这些都是不可知的,但所有的误差叠加到一起,
可以将其看做成一个高斯分布。也就是说所有点的误差\(\epsilon \sim \mathcal N(0,\sigma^2)\),
误差为x的概率\(P(\epsilon=x) = \frac{1}{\sqrt{2 \pi} \sigma }e^{\frac{x^2}{-2\sigma^2}}\)
所以每个\(\pmb X^i\)因为误差取得\(\pmb y^i\)的概率\(P(\pmb y^i|\pmb X^i) = \frac{1}{\sqrt{2 \pi} \sigma }e^{\frac{(\pmb X^i\pmb \theta - \pmb y^i)^2}{-2\sigma^2}}\)。
以上都是对一训练好的模型来说的。

而对于\(\pmb \theta\)未确定来说,\(\pmb X^i\)因为误差取得\(\pmb y^i\)的概率\(P(\pmb y^i|\pmb X^i; \pmb \theta) = \frac{1}{\sqrt{2 \pi} \sigma }e^{\frac{(\pmb X^i \pmb \theta - \pmb y^i)^2}{-2\sigma^2}}\)
这时\(y^i\)都发生的概率应为\(P(\pmb y| \pmb X; \pmb \theta)\),将其设为\(\mathcal L(\pmb \theta)\)

\[\begin{array}{rcl} \mathcal L(\pmb \theta) &=& P(\pmb y | \pmb X; \pmb \theta)\\ &=&\prod_{i=1}^n P(\pmb y^i|\pmb X^i; \pmb \theta)\\ &=& \prod_{i=1}^n \frac{1}{\sqrt{2 \pi} \sigma }e^{-\frac{(\pmb X^i\pmb \theta - \pmb y^i)^2}{2\sigma^2}} \end{array} \]

如上式,所表示的是\(\pmb y\)发生的概率,只需要求能使得这个式子取得最大值的\(\pmb{\theta}\)即可,观此式,为积式,而且还有许多我们可以通过\(\log\)函数将其转化为和式并去掉指数函数。设\(\mathcal l(\pmb \theta) = \log (\mathcal L(\pmb \theta))\)

\[\begin{array}{rcl} \mathcal l(\pmb \theta) &=& \log (\mathcal L(\pmb \theta))\\ &=&\log(\prod_{i=1}^n \frac{1}{\sqrt{2 \pi} \sigma }e^{-\frac{(\pmb X^i\pmb \theta - \pmb y^i)^2}{2\sigma^2}})\\ &=&\sum_{i=1}^n(\log( \frac{1}{\sqrt{2 \pi} \sigma })+\log(e^{-\frac{(\pmb X^i\pmb \theta - \pmb y^i)^2}{2\sigma^2}}))\\ &=&n\log( \frac{1}{\sqrt{2 \pi} \sigma }) + \sum_{i=1}^n\frac{(\pmb X^i\pmb \theta - \pmb y^i)^2}{2\sigma^2}\\ &=&n\log( \frac{1}{\sqrt{2 \pi} \sigma }) + \frac{\sum_{i=1}^n(\pmb X^i\pmb \theta - \pmb y^i)^2}{2\sigma^2}\\ \end{array} \]

由此得到了函数\(\sum_{i=1}^n(y^i-X^i\theta)^2\),即\((\pmb X \pmb \theta - \pmb y)^T(\pmb X \pmb \theta - \pmb y)\),且只需要求函数的最小值,就是求\(\mathcal L(\pmb\theta)\)的最大值。

即:
\(J(\pmb \theta) = (\pmb X \pmb \theta - \pmb y)^T(\pmb X \pmb \theta - \pmb y)\)

这时求其梯度得

\[\begin{array} {rcl} \frac{\partial J(\pmb \theta)}{\partial \pmb \theta} &=& \frac{\partial ((\pmb X \pmb \theta - \pmb y)^T(\pmb X \pmb \theta - \pmb y))}{\partial \pmb \theta}\\ &\overset{\pmb{x} = \pmb X\pmb\theta-\pmb y }{=}& (\frac{\partial\pmb x^T \pmb x}{\partial \pmb x})^T \frac{\partial (\pmb X \pmb\theta - \pmb y)}{\partial \pmb \theta}\\ &=& (2\pmb x)^T \pmb X\\ &=& 2(\pmb X\pmb\theta-\pmb y)^T \pmb X\\ \end{array} \]

逻辑回归

\[h(\pmb X^i) = \frac{1}{1+e^{- \pmb X^i \pmb\theta}} \]

求逻辑回归线性回归同理:

\[\begin{array}{rcl} \mathcal l(\pmb \theta) &=& \log (\mathcal L(\pmb \theta))\\ &=& \log (P(\pmb y | \pmb X; \pmb \theta))\\ &=& \log (\prod_{i=1}^n P(\pmb y^i|\pmb X^i; \pmb \theta))\\ &=& \log (\prod_{i=1}^n h_{\pmb \theta} (\pmb X )^{\pmb y^i} (1 - h_{\pmb \theta}(\pmb X))^{1-\pmb y^i})\\ &=& \sum_{i=1}^n(\pmb y^i\log(h_{\pmb \theta} (\pmb X ))+(1-\pmb y^i )\log(1 - h_{\pmb \theta}(\pmb X)))\\ \end{array} \]

令$J(\pmb \theta) = - \mathcal l(\pmb \theta) $

对其求梯度得

\[\begin{array} {rcl} \frac{\partial J(\pmb \theta)}{\partial \pmb \theta} &=& \frac{-\sum_{i=1}^n(\pmb y^i\log(h_{\pmb \theta} (\pmb X ))+(1-\pmb y^i )\log(1 - h_{\pmb \theta}(\pmb X)))}{\partial \pmb \theta}\\ &=& -\sum_{i=1}^n\frac{\pmb y^i\log(h)+(1-\pmb y^i )\log(1 - h)}{\partial h} \frac{h(\pmb\theta)}{\partial \pmb \theta}\\ &=& -\sum_{i=1}^n(\frac{\pmb y^i}{h} - \frac{1 - \pmb y^i}{1 - h})h(1 - h)\pmb X^i\\ &=& -\sum_{i=1}^n(\pmb y^i(1-h) - h(1 - \pmb y^i))\pmb X^i\\ &=& \sum_{i=1}^n(h_{\pmb \theta }(\pmb X^i) - \pmb y^i)\pmb X^i\\ &=& ( \begin{bmatrix} \vdots \\ h_{\pmb \theta }(\pmb X^i)\\ \vdots\\ \end{bmatrix} - \pmb y)^T \pmb X\\ \end{array} \]

为什么是sigmoid

在线性回归的时候我们假设了误差\(\epsilon\),将其视为一个高斯分布,得到每个\(\pmb y^i\)的概率,
为什么到了逻辑回归就不用假设,而是\(h_{\pmb \theta}\)直接得到的就是概率呢?是通过推导得出来的还是只是因为此函数比较优异?

链接

标签:frac,函数,推导,损失,pmb,theta,sigma,partial,log
From: https://www.cnblogs.com/Rannq2018/p/16716916.html

相关文章

  • 逻辑回归函数
    SigmoidFunctionLogisticFunction:\(S(x)=\frac{1}{1+e^{-x}}\)(\(S(0)=\frac{1}{1+1}=0.5\))Hyperbolictangent\(f(x)=tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}\)......
  • const修饰成员函数,常函数,常对象
    设计关键字:const、mutable常函数:-成员函数后面加const,就是常函数-常函数里面不能修改成员变量的值-成员变量加mutable修饰,在常函数中可以修改 常对象:-声明对象......
  • 【SQL 编程你也行】SQL Server 2012新功能之函数:转换函数
    在SQLServer2012中,新增了几个转换函数,用于支持数据类型的强制转化。由于之前主要用的是SQLServer2008R2,而公司的项目为了提高开发效率,很多表的列都为varchar类型,但也......
  • MySQL索引查询条件使用函数导致索引失效
     索引失效EXPLAINSELECTdt.nameASdeviceName,su.`name`ASuserName,date_format(co.upload_time,'%Y%m%d')astimeFROMtb_cust_ordercoI......
  • 寄存器与函数栈帧
    每一个函数独占自己的栈帧空间。当前正在运行的函数的栈帧总是在栈顶。Win32系统提供两个特殊的寄存器用于标识位于系统栈顶端的栈帧。(1)ESP:栈指针寄存器(extendedstackp......
  • Python学习:转义字符及用法、数据类型转换函数
    ASCII编码为每个字符都分配了唯一的编号,成为编码值。在Python中,一个ASCII字符除了可以用它的实体(真正的字符)表示,还可以用它的编码值表示。这种使用编码值来间接地表示字符......
  • JS 动态获取 Url 参数(封装函数)
     话不多说直接上代码:封装函数如下:(如果urls固定,可以只写一个name变量)getQueryString(name,urls){varurl=urls;//获取URL......
  • js 中常用的format函数
    js中经常要写dom和数据拼接的情况,下面这种format传参方式可以解决。$.format=function(source,params){if(arguments.length==1)returnfunctio......
  • 03:TypeScript — 从初学者到专家 |对象、数组和函数
    03:TypeScript—从初学者到专家|对象、数组和函数级别:初学者我们已经了解了什么是变量以及如何使用语句设置它们。我们还看到了可用于指定值类型的不同原始类型。当我......
  • 使用这些内置函数提升您的 JavaScript 技能!
    使用这些内置函数提升您的JavaScript技能!Pexels上的JoshHild拍摄的照片[标准内置对象-JavaScript|MDN本章记录了JavaScript的所有标准内置对象,包括它们......