| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> PyTorch深度学习实践——Logistic Regression -> 正文阅读 |
|
[人工智能]PyTorch深度学习实践——Logistic Regression |
? ? ? 在本次学习中,学习到了大名鼎鼎的logistic回归,虽然说是一种回归模型,但是这个模型实际上是做分类问题,对于这种回归模型我们同样从三个方面来进行介绍,logistic回归是什么?为什么要采用logistics回归?如何实现losgistic回归模型?下面是对于logistic回归的总结: logistic回归是什么?为什么要采用logistics回归?? ? ? 在解释为什么需要采用logistics回归之前,我们先对分类与回归任务进行比较 ? ? ? 在之前实现的线性回归模型中,为什么房价预测这种模型就是线性回归模型呢?因为我们的数据集输入以及需要实现的y_hat 输出都是一个连续的空间,而这输入到输出关系是一个类似于线性的函数,因此我们将他看作线性回归(预测)模型。但是我们知道在机器学习让任务中,我们常常也常常需要做分类任务,列入手写数字识别等任务 ? ? ? ? ? ? ? ? ??? ? ? ?? ? ? ? ?? ? ? ? 对于给出的0-9数据集,我们希望模型能实现自动的分类,也就是说这个时候的y_hat是一个具体的结果(数字是多少),那么在这种情况下使用线性回归模型来进行预测来进行预测就会出现以下问题 ? ? ? 对于构造类别编号时y={0,1,2,3,4,5,6,7,8,9},0和1编号更为接近,0和9编号差别大,但实际上我们发现,7,8,9三个数中,从相似性来看7和9更为接近,而7和8差距更大,但是按照道理,输入特征空间近似,输出结果也应该近似,而实际输入的7,9特征空间接近,但是输出7,9输出值之间隔一个数字8,因此无法用线性回归的方式简单的让模型输出0,1,2,3,4....,因为这些类别之间并没有数值大小含义,也就是在抽象概念中的9无法说它比0大,因为我们是在做分类问题,判别数字属于哪一个类别,而并不是单单比较数值大小。 ? ? ? 因此我们实际上对于y_hat输出,是输出一个对于一个数字,它对于各个类别的概率为多大,各个概率和为1,在比较各个概率后,将输出概率最大的结果输出得到结果,因此我们需要对模型进行改造。而这种改造后的模型编为logsitc回归模型。 如何实现losgistic回归模型?? ? ? 举出一个最简单的分类任务问题:二分类任务 ? ? 我们将例子理解为学习时间与分数的关系变为判定学习相应时间能否通过考试的概率任务,也就是说P(y_hat=1) + P(y_hat=0) = 1,选择概率值大的结果输出。 ? ? ?我们需要将之前的 y = wx + b变为输出结果是一个概率,那么我们采用一种函数,将输出的实数值映射到?[ 0 ,1]概率区间,而这种函数便是logistic函数 ?? ?其中的ρ函数便是logistic函数: 函数图像: ? ?通过函数图像我们可以分析得出: 当x趋于无穷大,y趋向1,x趋于无穷小,y为0,当x=0时,y的值为0.5(可以理解为输出的概率值),它的导函数类似与一种正态分布的函数,实际上因为这种正太分布的导函数而产生出logistic函数的 ? ?因此我们对于一个输入x,我们会将输出得到的y_hat代入 ρ(x)函数中复合得到一个[ 0 , 1]区间的概率值(也就是考试通过概率) ? ?大名鼎鼎的sigmod函数也就来源于这,因为logistics函数很牛,因此我们默认sigmod函数为logistics函数 其他sigmoid函数: ? ? ?对于相应的损失函数也会进行相应改变: ? ? ? ? ? 原来的线性模型的loss计算的是y_hat与真实y的偏移度(距离),不断更新参数使得距离最小化,但现在的loss计算的是一个概率分布的差异,而这又要提到交叉熵来计算分布的差异, ? ? ? ? ? ? ? ?假定Pd为y的真实输出概率,Pt为y_hat输出概率,则我们希望通过交叉熵的得到的两者概率分布差异越小越好,在本次列子中,采用二分类的交叉熵来计算概率分布差异 ? ? ? ?当y=1时,y_hat越大损失越小,而当y_hat越接近1时,loss最小,当y = 0时候,y_hat越小越好,当y_hat接近0时候,得到的loss最小,我们根据这种目标函数,我们求loss最小值时,能够使得分布项y_hat尽可能的逼近真实y分类值,这种损失函数也叫BCEloss ? ?Mini-Batchs将损失进行平均来进行训练模型 代码展示: ? ? 同之前的pytorch实现线性模型相比,改变的部分也不多: ?未完待续。。。? ? ? ? ? ? ? ? ? ? ? ?? ? ?? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 16:47:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |