IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 深度学习(二)-认识要从线性回归和逻辑回归说起 -> 正文阅读

[数据结构与算法]深度学习(二)-认识要从线性回归和逻辑回归说起

一、前言

本章开始之前先来了解一下几个概念:

  • 预测值和真实值
  • 预测值为模型自动计算的结果(标签)
  • 真实值为数据本身的结果
  • 损失函数
  • 损失函数是用来权衡预测值和真实值之间的差异的,通过这个差异我们可以判断模型参数的好坏,指导模型如何做下一步优化。
  • 最简单的损失函数如均方差,通过预测值和真实值之间的差值来计算预测的差异性

二、线性回归

1、基础概念

线性回归主要是基于一种假设:我们所要求解的目标变量y和特征变量x之间呈线性关系,也就是我们中学所学的:
y = k x + b y=kx+b y=kx+b

机器学习常用:
y = W x + b y=Wx+b y=Wx+b

虽说没有公式就没有伤害,但公式还是要有的!

我们的目标是找到一个合适 W W W和一个合适 b b b,以确定y和x的之间的关系,这个过程我们称之为训练,根据这个关系我们可以在已知 x x x的条件下计算出 y y y,这个过程我们称之为预测

然而在实际的问题中,特征变量x的往往不只一个,也就是影响目标变量y的因素存在多个( x 1 , x 2 , x 3 . . . x n x_1,x_2,x_3...x_n x1?,x2?,x3?...xn?),此时,一元的线性回归已经不能解决问题,就需要使用多元线性回归:
y = W 1 x 1 + W 2 x 2 + W 3 x 3 + . . . W n x n + B y=W_1x_1+W_2x_2+W_3x_3+...W_nx_n+B y=W1?x1?+W2?x2?+W3?x3?+...Wn?xn?+B

在假设了 x x x y y y的关系符合线性特征以后,下一步就是求解合适的参数 W 1 , W 2 . . . W n , B W_1,W_2...W_n,B W1?,W2?...Wn?,B,这里的合适如何衡量呢?

我们可以采用损失函数来衡量,预测的结果相对于真实结果损失(误差)严重,我们认为参数不合适,损失越小则认为参数越合适。

这里的损失函数可以采用均方误差:

l o s s = 1 n ∑ i = 1 n ( y 预 测 值 ? y 真 实 值 ) loss= \frac{1}{n} \sum_{i=1}^n (y_{预测值} - y_{真实值}) loss=n1?i=1n?(y??y?)

这个容易理解,预测值减去真实值,即是误差值。
y 预 测 值 y_{预测值} y?替换为线性回归函数之后即为:

l o s s = 1 n ∑ i = 1 n ( W 1 x 1 + W 2 x 2 + W 3 x 3 + . . . W n x n + B ? y 真 实 值 ) 2 loss= \frac{1}{n} \sum_{i=1}^n(W_1x_1+W_2x_2+W_3x_3+...W_nx_n+B-y_{真实值})^2 loss=n1?i=1n?(W1?x1?+W2?x2?+W3?x3?+...Wn?xn?+B?y?)2

不要害怕这么长的公式,因为并不需要我们手动打草稿计算!我们需要知道的是理解这个过程,从而知道如何选择模型,如何调整模型的参数使得模型最优。

2、模型求解

在定义完模型以后,下一步就是进行模型的求解,那如何求解呢,可以按照正常人的思维来理解:
要使得模型最优,让尽可能多的x和y之间符合某种规律,就需要使得预测误差 l o s s loss loss的值最小!
如此,目标就得到进一步拆解:

  • 求出loss最小时 W 1 , W 2 , W 3 . . . W n , B W_1,W_2,W_3...W_n,B W1?,W2?,W3?...Wn?,B的值(这里的最小不是很准确,因为很难求出,一般都是较小)

求解的过程中,我们引入一个新的算法:梯度下降法。

其核心是对自变量进行不断的更新迭代,使得目标函数 l o s s loss loss不断逼近最小值,具体过程让 W 1 , W 2 , W 3 . . . W n , B W_1,W_2,W_3...W_n,B W1?,W2?,W3?...Wn?,B沿着梯度最大的反方向更新,直到梯度较为平稳后停止。

更新的计算过程如下:
w = w ? η d w w=w-\eta dw w=w?ηdw

例如一条高山上的河流,要以最快的速度到达山底(求最小值),自然是通过最为陡峭(梯度最大)的坡度进行流淌。

下面举一个小栗子:

已知函数 y = x 2 ? 2 x + 1 y=x^2-2x+1 y=x2?2x+1 y y y最小时 x x x的值

第一步:初始化 x 0 = 0 x^0=0 x0=0 η = 0.1 \eta=0.1 η=0.1(随机初始化)
第二步:对函数求导 y 导 数 = d w = 2 x ? 2 y^ {导数} =dw=2x-2 y=dw=2x?2
迭代:

第1次: x 1 = x 0 ? η d x = 0 ? 0.1 ? ( 2 ? 0 ? 2 ) = 0.2 x^1=x^0-\eta dx=0-0.1*(2*0-2)=0.2 x1=x0?ηdx=0?0.1?(2?0?2)=0.2
第2次: x 2 = x 1 ? η d x = 0.36 x^2=x^1-\eta dx=0.36 x2=x1?ηdx=0.36

第22次: x 22 = x 21 ? η d x = 0.999... x^{22}=x^{21}-\eta dx=0.999... x22=x21?ηdx=0.999...
第23次: x 23 = x 22 ? η d x = 0.9999.. x^{23}=x^{22}-\eta dx=0.9999.. x23=x22?ηdx=0.9999..

从中可以发现,通过多次迭代 x x x的值越来越趋近于1,而我们画出 y = x 2 ? 2 x + 1 y=x^2-2x+1 y=x2?2x+1的函数图像来看, x = 1 x=1 x=1时, y y y值最小。

在这里插入图片描述


另外我们也可以通过令 y 导 数 = d w = 2 x ? 2 = 0 y^ {导数} =dw=2x-2=0 y=dw=2x?2=0的方式求解 y y y最小时 x = 2 2 = 1 x=\frac{2}{2}=1 x=22?=1,这种方式看起来更加简单快捷,为什么不使用这种方式,要整一个梯度下降法呢?

因为在现实的问题中,要求解的参数并非屈指可数,求解就变得异常困难,而梯度下降法虽然不那么精确,但至少能够在可承受的范围内给出一个相对满意的结果!

三、逻辑回归

1、基础概念

逻辑回归可以看做是线性回归的一种扩展,线性回归解决的是目标变量y和特征变量x之间的拟合问题,其输出是连续的,连续的值对于预测数值是极好的,但是对于分类问题却显得无能为力,比如要判断购物之后的评论是好评还是差评,这个时候科学家们想出了一个办法:

在已有线性的基础上加上一层可以进行逻辑判断的函数(通常叫做激活函数),再设定一个阈值,如果输出的连续值大于这个阈值,表示好评,小于阈值,表示差评,这样从理论上就完成了分类任务,也就是逻辑回归(事实上,很多分类算法都是基于此种模式)。

由于连续值 y y y的范围太广,阈值的设置就成了一个新的问题,为了解决这个问题,常规的做法是讲 y y y的范围进行压缩,映射都一个固定的空间内,比如0到1、-1到1等,如此,一些特定函数得以排上档期,如sigmoid:

在这里插入图片描述


以0.5位阈值,大于0.5表示好评,小于0.5即可表示差评。
如tanh:
在这里插入图片描述

以0位阈值,大于0表示好评,小于0即可表示差评。

如此,以sigmoid为例,逻辑回归的损失函数为:

l o s s = 1 n ∑ i = 1 n ( s i g m o i d ( W 1 x 1 + W 2 x 2 + W 3 x 3 + . . . W n x n + B ) ? y 真 实 值 ) 2 loss=\frac{1}{n}\sum_{i=1}^n(sigmoid(W_1x_1+W_2x_2+W_3x_3+...W_nx_n+B)-y_{真实值})^2 loss=n1?i=1n?(sigmoid(W1?x1?+W2?x2?+W3?x3?+...Wn?xn?+B)?y?)2

2、模型求解

模型的求解方式和线性回归一致,不做多余赘述。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:50:27  更:2022-03-15 22:53:23 
 
开发: 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/26 13:40:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码