深度学习之神经网络理论基础

news2024/11/24 14:55:11

深度学习之神经网络理论基础

人工神经元

人工神经元:人类神经元中抽象出来的数学模型

MP模型

mp模型:1943年心理学家W.S.McCulloch和数理逻辑学家W.Pitts研究出人工神经元,称为M-P模型。

在这里插入图片描述

M-P神经元(一个用来模拟生物行为的数学模型):接收n个输入(通常是来自其他神经元),并给各个输入赋予权重计算加权和,然后和自身特有的阈值进行比较 (作减法),最后经过激活函数(模拟“抑制"和“激活")处理得到输出(通常是给下一个神经元)

在这里插入图片描述
人工神经网络:大量神经元以某种连接方式构成的机器学习模型

多层感知机

首先需要说明的是:感知机模型的相关概念。从而在此基础上引出了第一个人工神经网络-多层感知机

感知机模型:激活函数为sgn(阶跃函数)的神经元(是一个用来分类的模型)

f ( x ) = sign ⁡ ( w ⋅ x + b ) f(x)=\operatorname{sign}(w \cdot x+b) f(x)=sign(wx+b)

感知机

感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元。也称为阈值逻辑单元(threshold logic unit)”。以下为一个单层感知机模型示意图
在这里插入图片描述
感知机模型存在的致命缺点:Minsky在1969年证明Perceptron无法解决异或问题

本质的原因是感知机模型:只能解决线性可分的问题。

在这里插入图片描述
导致了人工神经网络的第一次衰弱。

多层感知机(MLP)

多层感知机(MultiLayerPerceptron,MLP):单层神经网络基础上引入一个或多个隐藏层,使神经网络有多个网络层,因而得名多层感知机。

在这里插入图片描述
其中的权重矩阵为4 * 5的矩阵(对应4个输入x1,x2,x3,x4和隐藏层中的五个节点)
在这里插入图片描述

连接权重矩阵不一定唯一可能存在多个(多个隐藏层)

多层感知机的前向传播

注意的是其中X向量是一个1*4的结构。

通过前向传播算法得到了第一个1*5的向量结构 之后的另一个权重矩阵为5 * 3的权重矩阵。通过前向传播得到了对应的三个输出结果。

在运算的过程中每一层的计算需要激活函数,若无激活函数,网络将退化为单层网络。

H = X W h + b h O = H W o + b o O = ( X W h + b h ) W o + b o = X W h W o + b h W o + b o \begin{aligned} \boldsymbol{H} & =\boldsymbol{X} \boldsymbol{W}_{h}+\boldsymbol{b}_{h} \\ \boldsymbol{O} & =\boldsymbol{H} \boldsymbol{W}_{o}+\boldsymbol{b}_{o} \boldsymbol{O}=\left(\boldsymbol{X} \boldsymbol{W}_{h}+\boldsymbol{b}_{h}\right) \boldsymbol{W}_{o}+\boldsymbol{b}_{o}=\boldsymbol{X} \boldsymbol{W}_{h} \boldsymbol{W}_{o}+\boldsymbol{b}_{h} \boldsymbol{W}_{o}+\boldsymbol{b}_{o} \end{aligned} HO=XWh+bh=HWo+boO=(XWh+bh)Wo+bo=XWhWo+bhWo+bo

这个公式就说明了无激活函数时,最后多个矩阵相乘的结果与线性模型相同

在隐藏层引入激活函数就可以避免模型的退化。

激活函数

  1. 让多层感知机成为真正的多层,否则等价于一层
  2. 引入非线性,使网络可以逼近任意非线性函数(万能逼近定理,universalapproximator)

万能逼近定理:从理论上证明了激活函数可以逼近任意的非线性函数

激活函数需要具备的性质

  • 连续并可导(允许少数点上不可导),便于利用数值优化的方法来学习网络参数
  • 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率
  • 激活函数的导函数的值域要在合适区间内,不能太大也不能太小,否则会影响训练的效率和稳定(影响权重值的计算)

之后我们引出了三个常见的激活函数

分别为sigmoid(s型)Tanh(双曲正切)ReLU(修正线性单元)

在这里插入图片描述

激活函数特性

  1. 其中sigmoid函数通常用来做二分类问题的激活函数(其中导函数的两侧区域称为饱和区域 也是弊端之一因为在饱和区域的梯度接近于0导致前向传播变得困难)

  2. Tanh(双曲正切)图像与sigmoid函数的图像类似,但是值域的范围在-1和1之间 其中中间值的均值为0 适合做对称的数据(也存在饱和区)

其中两个函数的中间部分存在的区域我们称之为线性区域

  1. ReLU因为不存在饱和区域,因此通常应用在卷积神经网络中(非饱和激活函数)。

反向传播算法

  • 前向传播:输入层数据开始从前向后,数据逐步传递至输出层

  • 反向传播:损失函数开始从后向前,梯度逐步传递至第一层

反向传播作用:用于权重更新,使网络输出更接近标签
反向传播的原理:微积分中的链式求导法则

y = f ( u ) , u = g ( x ) ∂ y ∂ x = ∂ y ∂ u ∂ u ∂ x y=f(u), u=g(x) \quad \frac{\partial y}{\partial x}=\frac{\partial y}{\partial u} \frac{\partial u}{\partial x} y=f(u),u=g(x)xy=uyxu

首先要明白梯度是一个向量的概念(梯度向量)。通常在数学中常常计算某个点的梯度值。

损失函数 : 衡量模型输出与真实标签的差异

 Loss  = f ( y ∧ , y ) \text { Loss }=f\left(y^{\wedge}, y\right)  Loss =f(y,y)

网络计算图

在这里插入图片描述
计算符定义:prod(x,y),表示x与y根据形状做必要的变换,然后相乘

∂ L ∂ W ( 2 ) = prod ⁡ ( ∂ L ∂ O , ∂ O ∂ W ( 2 ) ) = ∂ L ∂ O ⋅ h ⊤ ∂ L ∂ h = prod ⁡ ( ∂ L ∂ O , ∂ O ∂ h ) = W ( 2 ) T ⋅ ∂ L ∂ O ∂ L ∂ z = prod ⁡ ( ∂ L ∂ O , ∂ O ∂ h , ∂ h ∂ z ) = ∂ L ∂ h ⊙ ϕ ′ ( z ) ∂ L ∂ W ( 0 ) = prod ⁡ ( ∂ L ∂ O , ∂ O ∂ h , ∂ h ∂ z , ∂ z ∂ W ( ν ) ) = ∂ L ∂ z ⋅ χ ⊤ \begin{array}{l} \frac{\partial L}{\partial W^{(2)}}=\operatorname{prod}\left(\frac{\partial L}{\partial O}, \frac{\partial O}{\partial W^{(2)}}\right)=\frac{\partial L}{\partial O} \cdot h^{\top} \\ \frac{\partial L}{\partial h}=\operatorname{prod}\left(\frac{\partial L}{\partial O}, \frac{\partial O}{\partial h}\right)=W^{(2) T} \cdot \frac{\partial L}{\partial O} \\ \frac{\partial L}{\partial z}=\operatorname{prod}\left(\frac{\partial L}{\partial O}, \frac{\partial O}{\partial h}, \frac{\partial h}{\partial z}\right)=\frac{\partial L}{\partial h} \odot \phi^{\prime}(z) \\ \frac{\partial L}{\partial W^{(0)}}=\operatorname{prod}\left(\frac{\partial L}{\partial O}, \frac{\partial O}{\partial h}, \frac{\partial h}{\partial z}, \frac{\partial z}{\partial W^{(\nu)}}\right)=\frac{\partial L}{\partial z} \cdot \chi^{\top} \end{array} W(2)L=prod(OL,W(2)O)=OLhhL=prod(OL,hO)=W(2)TOLzL=prod(OL,hO,zh)=hLϕ(z)W(0)L=prod(OL,hO,zh,W(ν)z)=zLχ

梯度下降(Gradient Decent)

反向传播的过程中如何去更新我们的权重呢?此时就涉及到了梯度下降的概念了。

  • 权值沿梯度负方向更新,使函数值减小
  • 导数:函数在指定坐标轴上的变化率
  • 方向导数:指定方向上的变化率
  • 梯度:一个向量,方向为方向导数取得最大值的方向

学习率(Learning Rate):控制更新步长

w i + 1 = w i − g ( w i ) w_{i+1}=w_{i}-g\left(w_{i}\right) wi+1=wig(wi)

w i + 1 = w i − L R ∗ g ( w i ) w_{i+1}=w_{i}-L R^{*} g\left(w_{i}\right) wi+1=wiLRg(wi)

在这里插入图片描述
学习率的设置通常小于1

损失函数

损失函数:衡量模型输出与真实的标签之间的差距

  • 损失函数(LossFunction):

Loss ⁡ = f ( y ∧ , y ) \operatorname{Loss} =f\left(y^{\wedge}, y\right) Loss=f(y,y)

  • 代价函数(CostFunction):

C o s t = 1 N ∑ i N f ( y i , y i ) Cost=\frac{1}{N} \sum_{i}^{N} f\left(y_{i}, y_{i}\right) Cost=N1iNf(yi,yi)

  • 目标函数(objectiveFunction):

O b j = C o s t +  Regularization Term(正则项)  \boldsymbol{Obj}=Cost+\text { Regularization Term(正则项) } Obj=Cost+ Regularization Term(正则项) 

其中正则项:用来控制模型的复杂度防止产生过拟合的现象

其中损失函数指的是单样本的损失,而代价函数指的是总体的损失的平均值 但是优化loss值与优化cost值在本质上是一样的

两种常见的目标函数

分别是用在回归任务中使用的均方误差损失和用于分类任务中的交叉熵损失函数。

  1. MSE(均方误差,MeanSquaredError)输出与标签之差的平方的均值,常在回归任务中使用。计算公式:

M S E = ∑ i = 1 n ( y i − y i h a t ) 2 n M S E=\frac{\sum_{i=1}^{n}\left(y_{i}-y_{i}^{hat}\right)^{2}}{n} MSE=ni=1n(yiyihat)2

  1. CE(CrossEntropy,交叉熵)交叉源自信息论,用于衡量两个分布的差异,常在分类任务中使用。计算公式:

H ( p , q ) = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) H(p, q)=-\sum_{i=1}^{n} p\left(x_{i}\right) \log q\left(x_{i}\right) H(p,q)=i=1np(xi)logq(xi)

其中p是真实的分布 q是模型预测的分布

信息熵:描述信息的不确定度

自信息:I(x)=-logP(x),p(x)是某事件发生的概率

信息熵=所有可能取值的信息量的期望,即

H ( x ) = E x ∼ p [ I ( x ) ] = − E [ log ⁡ P ( x ) ] = − ∑ i = 1 N p i log ⁡ ( p i ) H(\mathrm{x})=E_{x \sim p}[I(x)]=-E[\log P(x)]=-\sum_{i=1}^{N} p_{i} \log \left(p_{i}\right) H(x)=Exp[I(x)]=E[logP(x)]=i=1Npilog(pi)

相对熵:又称K-L散度,衡量两个分布之间的差异。公式如下:

D K L ( P ∥ Q ) = E x ∼ p [ log ⁡ P ( x ) Q ( x ) ] = E x ∼ p [ log ⁡ P ( x ) − log ⁡ Q ( x ) ] = ∑ i = 1 N P ( x i ) ( log ⁡ P ( x i ) − log ⁡ Q ( x i ) ) H ( p , q ) = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) H ( x ) = E x ∼ p [ I ( x ) ] = − E [ log ⁡ P ( x ) ] = − ∑ i = 1 N p i log ⁡ ( p i ) \begin{array}{l} \begin{array}{l} D_{K L}(P \| Q)=E_{x \sim p}\left[\log \frac{P(x)}{Q(x)}\right]=E_{x \sim p}[\log P(x)-\log Q(x)] \\ =\sum_{i=1}^{N} \mathrm{P}\left(\mathrm{x}_{i}\right)\left(\log P\left(\mathrm{x}_{i}\right)-\log \mathrm{Q}\left(\mathrm{x}_{i}\right)\right) \\ H(p, q)=-\sum_{i=1}^{n} p\left(x_{i}\right) \log q\left(x_{i}\right) \end{array} \\ H(\mathrm{x})=E_{x \sim p}[I(x)]=-E[\log P(x)]=-\sum_{i=1}^{N} p_{i} \log \left(p_{i}\right) \end{array} DKL(PQ)=Exp[logQ(x)P(x)]=Exp[logP(x)logQ(x)]=i=1NP(xi)(logP(xi)logQ(xi))H(p,q)=i=1np(xi)logq(xi)H(x)=Exp[I(x)]=E[logP(x)]=i=1Npilog(pi)

H(p,q)=H(P)+D_KL(PlIQ),即 交叉熵=信息熵+相对熵

Softmaxa函数

在交叉熵验证中常用到的一个函数:softmax函数

将数据变换到符合概率分布的形式

y i = S ( z ) i = e z i ∑ j = 1 C e z j , i = 1 , … , C y_{i}=S(\boldsymbol{z})_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{C} e^{z_{j}}}, i=1, \ldots, C yi=S(z)i=j=1Cezjezi,i=1,,C

Softmax操作

  1. 取指数,实现非负
  2. 除以指数之和,实现之和为1

在这里插入图片描述

在动手学深度学习中用于多分类问题,并且会给出预测的结果值

权值初始化

权值初始化:训练前对权值参数赋值,良好的权值初始化有利于模型训练简便但错误的方法:初始化为全0(会导致网络的退化

随机初始化法:高斯分布随机初始化,从高斯分布中随机采样,对权重进行赋值,比如N~(0,0.01)30准则:数值分布在(u-30,u+3)中的概率为99.73%

在这里插入图片描述
控制权重的尺度,使得初始化的值不能落在饱和的区域。使得模型的训练不能变得更加的困难。

正则化方法

Regularization:减小方差的策略,通俗理解为减轻过拟合的策略

  • 误差可分解为:偏差,方差与噪声之和。即误差=偏差+方差+噪声之和

  • 偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力

  • 方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响

  • 噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界

过拟合现象:方差过大在训练集表现良好在测试集表现糟糕

两种常见的正则项

L1 Regularization Term:
∑ i N ∣ w i ∣ \begin{array}{l} \sum_{i}^{N}\left|w_{i}\right| \\ \end{array} iNwi
L2 Regularization Term:
∑ i N w i 2 \begin{array}{l} \sum_{i}^{N} w_{i}^{2} \end{array} iNwi2

从L2正则项由此引出了权值衰减的概念。

权值衰减(weight decay)

O b j = Cos ⁡ t +  Regularization Term  O b j = Loss ⁡ + λ 2 ∗ ∑ i N w i 2 \begin{array}{l} O b j=\operatorname{Cos} t+\text { Regularization Term } \\ O b j=\operatorname{Loss}+\frac{\lambda}{2} * \sum_{i}^{N} w_{i}^{2} \end{array} Obj=Cost+ Regularization Term Obj=Loss+2λiNwi2

若无正则项则对应的公式为:

w i + 1 = w i − ∂ O b j ∂ w i = w i − ∂ L o s s ∂ w i w_{i+1}=w_{i}-\frac{\partial O b j}{\partial w_{i}}=w_{i}-\frac{\partial L o s s}{\partial w_{i}} wi+1=wiwiObj=wiwiLoss

有正则项则对应的公式为:

w i + 1 = w i − ∂ O b j ∂ w i = w i − ( ∂ L o s s ∂ w i + λ ⋆ w i ) = w i ( 1 − λ ) − ∂ L o s s ∂ w i \begin{array}{l} w_{i+1}= w_{i}-\frac{\partial O b j}{\partial w_{i}}=w_{i}-\left(\frac{\partial L o s s}{\partial w_{i}}+\lambda^{\star} w_{i}\right) \\ =w_{i}(1-\lambda)-\frac{\partial L o s s}{\partial w_{i}} \end{array} wi+1=wiwiObj=wi(wiLoss+λwi)=wi(1λ)wiLoss

随机失活(Dropout)

优点:避免过度依赖某个神经元,实现减轻过拟合

  • 随机:dropout probability(eg:p=0.5)
  • 失活:weight=0

在这里插入图片描述
注意事项:训练和测试两个阶段的数据尺度变化测试时,神经元输出值需要乘以p

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

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

相关文章

FileLink内外网文件交换系统解决方案

FileLink内外网文件交换系统,作为一种高效且安全的文件传输解决方案,在多个应用场景中发挥着不可替代的作用。无论是在企业内部不同子网间的文件交换,还是企业与外部合作伙伴之间的文件共享,FileLink都能提供稳定可靠的解决方案。…

Qt---文件系统

一、基本文件操作 1. QFile对文件进行读和写 QFile file( path 文件路径) 读: file.open(打开方式) QlODevice::readOnly 全部读取->file.readAll(),按行读->file.readLine(),atend()->判断是否读到文件尾 …

算法课程笔记——自下而上树形DP

算法课程笔记——自下而上树形DP #include<bits/stdc.h>usingnamespacestd; constintN100005; intn,a[N]; longlongdp[N][2]; vector<int> e[N]; voiddfs(intu){for(autov:e[u]){dfs(v);dp[u][1]dp[v][0];dp[u][0]max(dp[v][0],dp[v][1]);}dp[u][1]a[u]; } intmain…

一个API接口对接ChatGPT3.5/4.0,Claude3,文心一言,通义千问,智谱AI等多款AI模型,打造属于自己的AI应用

今天我要给大家介绍团队的最新项目——一个集成了ChatGPT-3.5/4.0、Claude3、文心一言、通义千问、智谱AI等多个AI模型的API模型聚合平台。仅需使用一个接口就可以对接所有AI模型 为什么要创建这个平台&#xff1f; 随着不同的AI模型陆续问世&#xff0c;每个模型都有其独特…

怎么获得公网IP?

什么是公网IP 在计算机网络中&#xff0c;公网IP&#xff08;Internet Protocol&#xff09;是指可以直接被互联网访问和通信的IP地址。相对应的&#xff0c;私网IP则是在局域网内使用的IP地址&#xff0c;无法直接被互联网访问。获得公网IP对于一些特定的网络需求非常重要&am…

C++的相关知识集

1、C概述 1 两大编程思想 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效&#xff0c;简洁&#xff0c;快速和可移植的传统。 2 起源 与c语言一样&#xff0c;c也是在贝尔实验室诞生的&#xff0c;Bjarne Stroustrup(本贾尼斯特劳斯特卢普)在2…

解锁AI写作新纪元的文心一言指令

解锁AI写作新纪元的文心一言指令 在人工智能&#xff08;AI&#xff09;飞速发展的今天&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术取得了显著的进步。文心一言&#xff0c;作为NLP领域的一颗璀璨明星&#xff0c;以其强大的文本生成和指令理解能力&#xff0c;为…

【Docker】docker 镜像如何push到私有docker仓库

文章目录 一、 网址解析对于Linux和macOS系统&#xff1a;对于Windows系统&#xff1a; 二、 镜像push 一、 网址解析 希望 registry.meizu.com 能够解析到内网IP地址&#xff08;例如10.128.17.157&#xff09;&#xff0c;您可以通过修改主机的 hosts 文件来实现。 hosts 文…

Workfine签章方案使用说明

概述 为支持绝大部分第三方签章平台&#xff0c;Workfine针对性添加了部分动作事件与message支持。用户只需要自己开发中间代理程序&#xff0c;用于Workfine与签章平台的通讯即可完成整套签章方案。 整体业务流程图如下&#xff1a; 设计端添加发送PDF动作事件&#xff0c;生…

代理IP可靠吗?哪里可以找到可靠的代理?

需要代理来访问受限制的网站或改善您的在线隐私&#xff1f;别再犹豫了&#xff01;在这篇博文中&#xff0c;我们将探讨您可以使用的选项&#xff0c;并提供有关在哪里获取代理的指导。 首先&#xff0c;让我们了解什么是代理及其工作原理。代理充当您的设备和互联网之间的中介…

HTML哆啦A梦

目录 写在前面 HTML简介 完整代码 代码分析 系列推荐 写在最后 写在前面 谁不想拥有一只可爱的叮当猫呢&#xff1f;本期小编给大家带来了一个萌萌的哆啦A梦。 HTML简介 HTML&#xff0c;即超文本标记语言&#xff0c;是构建网页的基础技术之一&#xff0c;它是一种标…

[数据结构1.0]选择排序

鼠鼠前面的博客介绍过选择排序是常见的排序算法&#xff0c;选择排序有但不限于直接选择排序和堆排序&#xff01;那么鼠鼠今天浅谈一下选择排序&#xff01; 鼠鼠本博客用排升序来介绍选择排序&#xff01; 目录 1.直接选择排序 1.1.直接选择排序 1.2.直接选择排序特性 2…

【qt】动态属性

这里写目录标题 一.属性1.属性的好处2.添加属性3.使用属性 二.只读属性 一.属性 1.属性的好处 说到属性&#xff08;property&#xff09;&#xff0c;你们会想到什么&#xff1f;我会联想到特点&#xff0c;就是一类对象所特有的&#xff0c;在C中&#xff0c;成员数据就是这…

标准流、浮动、flex布局

标准流 浮动 特点&#xff1a; 具备顶对齐&#xff0c;行内块显示特点&#xff0c;浮动的盒子是脱离了标准流。 如果父级的宽度不够&#xff0c;浮动的盒子会掉下来 <style>.one{width: 200px;height: 200px;background-color: aqua;float: left;}.two{width: 200px;he…

zabbix监控mariadb

zabbix 服务端安装请参阅&#xff1a;红帽 9 zabbix 安装流程_红帽安装zabbix-CSDN博客 源码包安装mariadb请参阅&#xff1a;源码包安装mariadb_mariadb 11 源码编译安装-CSDN博客 在MariaDB中&#xff0c;你需要创建一个专门的用户&#xff0c;用于Zabbix进行监控。这个用户…

PingCAP 戴涛:构建面向未来的金融核心系统

作者&#xff1a;戴涛 导读 近日&#xff0c;平凯星辰解决方案技术部总经理戴涛在 2024 数据技术嘉年华活动中&#xff0c;做了主题为“构建面向未来的金融核心系统”的分享&#xff0c;本文为戴涛演讲实录的全文。 文章分析了中国金融行业的发展趋势&#xff0c;并且基于这…

Typescript 哲学 - ts模块使用最佳实践

ts的作用域 默认是全局&#xff08;global&#xff09;&#xff0c;这也是为什么在 两个ts文件声明同一个变量报错变量名冲突&#xff0c;解决方法是使某个文件以模块的形式存在&#xff08;文件顶层使用 export 、import &#xff09; In TypeScript, just as in ECMAScript 2…

微软如何打造数字零售力航母系列科普10 - 什么是Azure Databricks?

什么是Azure Databricks&#xff1f; 目录 一、数据智能平台是如何工作的&#xff1f; 二、Azure Databricks的用途是什么&#xff1f; 三、与开源的托管集成 四、工具和程序访问 五、Azure Databricks如何与Azure协同工作&#xff1f; 六、Azure Databricks的常见用例是…

2024.5组队学习——MetaGPT智能体理论与实战(待续)

学习资料&#xff1a;项目地址——hugging-multi-agent、在线阅读、MetaGPT项目、MetaGPT中文文档 文章目录 一、环境配置1.1 配置MetaGPT1.2 配置大模型api_key1.3 测试demo 一、环境配置 全部工作在Autodl上完成&#xff0c;下面是简单记录&#xff1a; 1.1 配置MetaGPT 下…

Android Activity因配置改变重建,ViewModel#onClear方法为什么不被调用?

1&#xff0c;问题 注意到切换语言或字体大小改变时&#xff0c;Activity会发生重建&#xff0c;但对应的ViewModel却不会被clear&#xff0c;甚至在重建的Activity&#xff0c;通过new ViewModelProvider(this).get(ViewModel.class)也是上一个Activity的实例&#xff0c;为什…