开发者社区> 刘新伟> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

sigmoid 函数的损失函数与参数更新

简介: 1 sigmoid 函数的损失函数与参数更新 逻辑回归对应线性回归,但旨在解决分类问题,即将模型的输出转换为 $[0, 1]$ 的概率值。逻辑回归直接对分类的可能性进行建模,无需事先假设数据的分布。最理想的转换函数为单位阶跃函数(也称 Heaviside 函数),但单位阶跃函数是不连续的,没法在实际计算中使用。
+关注继续查看

1 sigmoid 函数的损失函数与参数更新

逻辑回归对应线性回归,但旨在解决分类问题,即将模型的输出转换为 $[0, 1]$ 的概率值。逻辑回归直接对分类的可能性进行建模,无需事先假设数据的分布。最理想的转换函数为单位阶跃函数(也称 Heaviside 函数),但单位阶跃函数是不连续的,没法在实际计算中使用。故而,在分类过程中更常使用对数几率函数(即 sigmoid 函数):

$$ \sigma(x) = \frac{1}{1+e^{-x}} $$

易推知,$\sigma(x)' = \sigma(x)(1- \sigma(x))$.

假设我们有 $m$ 个样本 $D = \{(x_i, y_i)\}_i^m$, 令 $X = (x_1, x_2, \cdots, x_m)^T, y = (y_1, y_2, \cdots, y_m)^T$, 其中 $x_i \in \mathbb{R}^n, y_i \in \{0, 1\}$, 关于参数 $w \in \mathbb{R}^n, b \in \mathbb{R}$, ($b$ 需要广播操作),我们定义正例的概率为

$$ P(y_j=1|x_j;w,b) = \sigma(x_j^Tw +b) = \sigma(z_j) $$

这样属于类别 $y$ 的概率可改写为

$$ P(y_j|x_j;w,b) = \sigma(z_j)^{y_j}(1-\sigma(z_j))^{1-y_j} $$

令 $z = (z_1, \cdots, z_m)^T$, 则记 $h(z) = (\sigma(z_1), \cdots, \sigma(z_m))^T$, 且 Logistic Regression 的损失函数为

$$ \begin{aligned} L(w, b) =& - \displaystyle \frac{1}{m} \sum_{i=1}^m (y_i \log (\sigma(z_i)) +(1-y_i) \log (1 - \sigma(z_i)))\\ =& - \frac{1}{m} (y^T\log (h(z)) + (\mathbf{1}-y)^T\log(\mathbf{1}- h(z))), \text{ 此时做了广播操作} \end{aligned} $$

这样,我们有

$$ \begin{cases} \nabla_w L(w,b) = \frac{\text{d}z}{\text{d}w} \frac{\text{d}L}{\text{d}z} = - \frac{1}{m}X^T(y-h(z))\\ \nabla_b L(w,b) = \frac{\text{d}z}{\text{d}b} \frac{\text{d}L}{\text{d}z} = - \frac{1}{m}\mathbf{1}^T(y-h(z)) \end{cases} $$

其中,$\mathbf{1}$ 表示全一列向量。这样便有参数更新公式 ($\eta$ 为学习率):

$$ \begin{cases} w \leftarrow w - \eta \nabla_{w} L(w,b)\\ b \leftarrow b - \eta \nabla_b L(w,b) \end{cases} $$

更多机器学习中的数见:机器学习中的数学

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
今日直播|SIGMOD 2022论文精选解读
走进阿里云数据库前沿科研
313 0
从Sigmoid到GELU,一文概览神经网络激活函数
从Sigmoid到GELU,一文概览神经网络激活函数
67 0
Visual Studio 2019 正式版 更新内容
大早上更新了Visual Studio 2019, 试用一下
59 0
像改PPT一样去复用AIoT解决方案【IoT Studio 1.7上线】
差不多3秒,就把别人的方案复制到自己的项目空间里了
13284 0
每个程序员1小时内必须解决的5个编程问题(转)
  英文原文:Five programming problems every Software Engineer should be able to solve in less than 1 hour   每次我发布软件工程师的岗位工作要求,各种求职申请就会纷至沓来,接踵而至。
749 0
visual C++游戏绘图之透明效果制作原理
<p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"> <span style="font-family:'Microsoft YaHei'; font-size:16px"
1432 0
一起谈.NET技术,Visual Studio与C#编程十个实用技巧
  如果你通过搜索引擎发现这篇文章的,我建议你先看看本系列的第一篇,这是本系列文章的第二篇,今天为大家带来更丰富的C#和Visual Studio编程技巧,一起来看看吧。   1、DataTable.HasRows   它不属于任何框架,但通过扩展方法很容易模仿这样一个方法,它不会消除检查数据表对象...
893 0
+关注
刘新伟
自学 python,MXNet,Keras,Tensorflow 博客园:http://www.cnblogs.com/q735613050/ 慕课网:https://www.imooc.com/u/546
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载