线性神经网络

news2024/11/17 21:31:56

线性神经网络

我们应该从线性神经网络开始,去逐步了解深度神经网络(深度学习)的各种复杂结构和底层原理。

1. 线性回归

用一个线性的模型来拟合数据与它们的标签之间的映射,用于回归问题。

1.1 构造线性模型:

y = ω ^ T x (1-1) y=\widehat{\omega}^Tx\tag{1-1} y=ω Tx(1-1)
请添加图片描述
图1 线性回归与神经网络的关系

由(1-1)不难发现,线性回归其实就是单层线性神经网络。

1.2 最小二乘损失函数:

可以证明,让线性回归偏差的L2范数(均方误差)最小 等价于 对线性模型的极大似然估计…
L ( ω ^ ) = ∑ i = 1 N ∣ ∣ ω ^ T x i − y i ∣ ∣ 2 2 (1-2) L(\widehat{\omega})=\sum_{i=1}^N||\widehat{\omega}^Tx_i-y_i||^2_2\tag{1-2} L(ω )=i=1N∣∣ω Txiyi22(1-2)

1.3 求解:

(1-2)是一个凸优化问题,而且比较简单,可以求得解析解。所以可以令求导=0的方式对其求解析解:
ω ^ = ( X T X ) − 1 X T Y (1-3) \widehat{\omega}=(X^TX)^{-1}X^TY\tag{1-3} ω =(XTX)1XTY(1-3)
当然梯度下降应该能求出非常接近解析的效果…

1.4 预测:

求解出参数向量之后把x代入线性模型即可预测。

1.5 小节:

不难理解吧?最经典、古老、简单的模型了吧…

2. 线性分类

线性分类就要是把线性回归设法用于分类问题。相对于回归问题来说,变化有以下几点:

2.1 多输出

最直观的改动应该是一个输出变成多个了。我们期望用多个输出神经元来达到估计每个类别分布的目的。
请添加图片描述
图2 线性分类与神经网络的关系

2.2 输出层

搞清楚多输出的网络结构之后,输出层应该使用怎样的策略呢?对每个输出神经元应用(1-1)那样的前向传播方法来计算不可以吗??其实不行:

因为对于分类问题,必须要使所有神经元的输出满足:

  1. 均≥0
  2. 和=1
  3. 输出层的传递函数必须可导

对于以上3个特点,分类问题的输出层有着独特的设计——softmax激活函数
y j ^ = e o j ∑ k N e o k (2-1) \widehat{y_j}=\frac{e^{o_j}}{\sum_{k}^{N}e^{o^k}}\tag{2-1} yj =kNeokeoj(2-1)
(2-1)中,oj为输出层第j个【原输出】,经过这样的处理后yj为最终输出,可以保证以上三点。

softmax激活函数的具体工作方式如下图所示:
请添加图片描述
图3 由softmax激活函数连接到输出层示意

2.3 损失函数

这样搞了之后我们的损失函数采用交叉熵损失,这是由极大对数似然估计推导而来的损失函数,可以证明和MSE损失是等价的:
l ( y , y ^ ) = − ∑ j = 1 N y i l o g y i ^ (2-2) l(y,\widehat{y})=-\sum_{j=1}^{N}y_ilog\widehat{y_i}\tag{2-2} l(y,y )=j=1Nyilogyi (2-2)
(2-2)中,y为独特编码的分类标签向量,yi为y的第i个分量。

3. 逻辑回归

逻辑回归这个名称容易造成误解。它并不是处理回归问题的,而是分类问题。经典的逻辑回归用来解决二分类问题。它需要预先估计分类数据点的分布,然后通过引入非线性函数(logistic/sigmoid)来估计把数据分为某类别的概率,输出的是概率分布函数P(y|x,θ)。

下面先以二分类举例推导:

3.1 估计数据边界(分类超平面是线性or非线性?)

一般假设它是线性的,即:
y = θ ^ T x (3-1) y=\widehat{θ}^Tx\tag{3-1} y=θ Tx(3-1)

3.2 构造预测函数:

其实就是只有两个类的softmax函数:
p ( y = 1 ∣ x , θ ) = h θ ( x ) p ( y = 0 ∣ x , θ ) = 1 − h θ ( x ) h θ ( x ) = 1 1 + e − θ T x (3-2) p(y=1|x,θ)=h_θ(x)\\ p(y=0|x,θ)=1-h_θ(x)\\ h_θ(x)=\frac{1}{1+e^{-θ^Tx}}\tag{3-2} p(y=1∣x,θ)=hθ(x)p(y=0∣x,θ)=1hθ(x)hθ(x)=1+eθTx1(3-2)

3.3 构造损失函数:(极大似然估计)

l ( x ) = ∑ i = 1 N y i l o g h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) J ( θ ) = − l ( θ ) m (3-3) l(x)=\sum_{i=1}^{N}y_ilogh_θ(x_i)+(1-y_i)log(1-h_θ(x_i))\\ J(θ)=-\frac{l(θ)}{m}\tag{3-3} l(x)=i=1Nyiloghθ(xi)+(1yi)log(1hθ(xi))J(θ)=ml(θ)(3-3)

J(θ)就是极大似然函数的负对数,求J(θ)的最小值即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fiddler Orchestra用户指南:打造高效协同调试利器

引言:今天Fiddler更新到5.0版本后,小酋不经意间晃到了“Fiddler Orchestra”选项卡。爱折腾的小酋赶紧链接到官方用户指南一睹为快,看看这是什么东西,实现了什么新功能。下面是小酋看后做的一个翻译抢先版。 这是了解和设置Fiddl…

i5 3470+XSB75M-PK+HD 7750安装黑苹果macOS Big Sur 11.7.7

我本次使用的是 HD 7750 进行安装黑苹果(闲鱼80元买的),这款显卡直接就是免驱,最高可以安装的版本是 macOS Monterey ,但是建议安装至 macOS Big Sur 以获得较好的体验。 EFI(OC引导) EFI.zip …

RabbitMQ高阶使用队列实现

目录 1 从打车开始说起1.1 需要解决的问题1.1.1 打车排队 2 排队人数2.1 需求2.1.1 需求分析 2.2 实现方案2.2.1 MySQL2.2.1.1 入队2.2.1.2 获取进度2.2.1.3 遇到问题 2.2.3 Redis Zset 2.3 排队人数架构介绍2.4 数据结构2.4.2 zset结构2.4.1 雪花算法 2.5 功能实现2.5.1 派单2…

Java 实现反转一个链表

文章目录 思路核心四步骤循环移动代码实现 思路 翻转指的是改变链表中结点的指向,而不是将它的数据反转。 上图展示出的就是一个反转前的链表,下图展示一个反转后的链表。 根据上图可以看出,结点的地址和数据都没有改变,改变的…

Java SSM框架基础面试题

一、Spring面试题 1、Spring 在ssm中起什么作用? Spring:轻量级框架作用:Bean工厂,用来管理Bean的生命周期和框架集成。两大核心: 1、IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,s…

Java SSM框架面试题

sql 中 ${} 和 #{}的区别: #将传入的参数都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{age},如果传入的值是18,那么解析成sql时的值为order by “18”, 如果传入 age ,则会解析为 order by “age”将传入的参…

6.S081——Lab4——trap lab

0.briefly speaking 这是MIT 6.S081 Fall 2021课程的第四个实验,它是有关陷阱机制的一系列小问题,如果对陷阱机制仍有疑问,可以参考我之前写的其他3篇博客,它们很好地解释了一些背景知识: 用户态陷阱(以系统调用为例…

oracle 19c 部署

安装前的基础环境和用户配置等参考rac部署篇oracle rac部署 一、资源准备 将数据库软件上传解压到oracle的家目录(注意解压后的用户属组) [oraclerac1 ~]$ unzip -d $ORACLE_HOME xxxx.zip 二、在xmanager或者vnc中执行安装 [oraclerac1 db_1]$ ./runInstaller 先安装一个数据…

SSM 框架常见面试题

1 Spring面试题 1、Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成。 两大核心:1、IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,ser…

5.3、Dockerfile内命令

【docker】CMD ENTRYPOINT 区别 终极解读!_绝世好阿狸的博客-CSDN博客 0、上下文路径 $ docker build -t nginx:v3 . # . 是上下文路径,那么什么是上下文路径呢? 上下文路径:指docker在构建镜像时想使用本机的文件,…

缓冲区溢出与防护

目录 一、初识缓冲区溢出 1.1 缓冲区溢出概念 1.2 缓存区 1.3 缓存区溢出的危害 1.4 缓存区溢出事件 二、缓存区溢出攻击 2.1 溢出原理 2.2 典型的寄存器 三、缓存区溢出防御 3.1 缓冲区溢出攻击目标 3.2 缓冲区溢出条件 3.3 缓冲区溢出防范 3.3.1 程序设计过程中…

【后端开发】狂神笔记:Redis进阶

文章目录 1 Redis事务1.1 Redis事务简介1.2 Redis事务操作过程1.2.1 开启事务--->执行事务1.2.2 取消事务(discurd) 1.3 事务错误1.3.1 编译期异常1.3.2 运行时异常 2 Redis实现乐观锁2.1 乐观锁和悲观锁2.2 正常执行2.3 测试异常执行 3 Jedis3.1 导入依赖3.2 编码测试3.2.1…

青翼科技自研模块化互联产品 • 模拟采集FMC子卡【产品资料】

FMC122是一款基于FMC标准规范,实现2路16-bit、1GSPS ADC同步采集,2路16-bit 2.5GSPS DAC同步回放功能子卡模块。该模块遵循VITA57.1标准,可直接与FPGA载卡配合使用,板卡ADC器件采用TI的ADS54J60芯片,该芯片具有两个模拟…

EasyExcel实现execl导入导出

引言 在实际开发中,处理 Excel 文件是一个常见的需求。EasyExcel 是一个基于 Java 的开源库,提供了简单易用的 API,可以方便地读取和写入 Excel 文件。本文将介绍如何使用 EasyExcel 实现 Excel 导入功能,以及一些相关的技巧和注…

java的线程池

一、线程池概念 若不使用线程池,在新创建的线程start()后执行完run()就自动销毁了,造成了资源的浪费。使用线程池可以暂时存储线程。 线程池的主要核心原理: 线程池的代码实现: 注意:在实际开发中线程池并不会关闭&a…

【MySQL】一文带你了解排序检索数据

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…

经典电路分析——看看大佬设计或代代人改进的作品——欢迎批评指正

1、TTL反相器 1)输入0.3v a)T1,T2,T4 先分析T1的工作状态:计算ube1和uce1 ube1大于开启电压,所以ube10.7v。 因为T2,T4要想导通,V1b上需要有打通三个PN结的能力,也就是说V1b3*0.…

【UE 从零开始制作坦克】3-履带移动效果

目录 一、设置转向灵敏度 二、原地掉头 三、履带移动效果 效果 一、设置转向灵敏度 为了解决坦克转向灵敏度过高的问题,我们首先打开“TankZongLei”蓝图 选中“载具移动(MovementComp)(继承)”将转向输入率中的上…

数据结构图解--队列 的实现/算法+源码

图解--队列 最终的效果接下来 我们要做的就是 使用编程实现这种意识形态下的结构创建队列结构体初始化init进队入队 尾部插入队列的判断满操作出队队列是否为空遍历队列代码的操作交互意识 最终的效果 1.队列的结构形式 队列是一种线性结构 但是特殊的线性结构 只要的特殊在于…

【炫酷登录界面】详解5款高级的前端登录页面及实现源码(附完整源码)

【写在前面】 其实好早之前我就想写这篇文章了,也有些网友还会私信我,说有时候公司要求登录页面的改造,问我能不能出一期关于登录页的文章,于是乎我也是拖到这个时候才整理出来,其实每篇文章的效果内容我都是自己亲自去…