神经网络理论(机器学习)

motivation

如果逻辑回归的特征有很多,会造出现一些列问题,比如:

  1. 线性假设的限制: 逻辑回归是基于线性假设的分类模型,即认为特征与输出之间的关系是线性的。如果特征非常多或者特征与输出之间的关系是非线性的,逻辑回归可能无法很好地进行分类。

  2. 特征间相关性: 如果特征之间高度相关,逻辑回归可能会受到多重共线性的影响,导致参数估计不稳定或难以解释。

  3. 非线性决策边界的需求: 在复杂的分类问题中,数据可能需要非线性的决策边界来更好地进行分类。

相比之下,神经网络有一系列的优势:

  1. 非线性关系建模: 神经网络能够学习复杂的非线性关系,因此在特征与输出之间存在非线性关系或需要复杂的决策边界时,神经网络通常能提供更好的性能。

  2. 自动特征学习: 神经网络能够通过隐藏层自动学习特征的高级表示,无需手动进行特征工程,这对于大量特征的问题尤为有利。

  3. 适应性强: 神经网络通常对数据中的噪声和复杂性具有一定的鲁棒性,能够更好地泛化到新的数据集。

简单人工神经网络

那么简单介绍一下神将网络:

上面是一个简单人工神经网络,x1-->x3是输入的特征,每个特征都会乘上相应的参数最后得到一个值。(这样看起来和线性回归差不多)

复杂神经网络(旧版本)

接下来介绍一个稍微复杂一点的:

首先定义一些术语:

a^{(i)}_{j}第i层,第j个神经元的激活项
\Theta ^{(j)}从j层到j+1层的权重矩阵(注意,行从1开始,列从0开始)
激活项由一个神经元接受并输出的值

注意:

a^{(2)}_{1}=g(\Theta^{(1)}_{10}x_{0} + \Theta^{(1)}_{11}x_{1} + \Theta^{(1)}_{12}x_{2} + \Theta^{(1)}_{13}x_{3})\\

a^{(2)}_{2}=g(\Theta^{(1)}_{10}x_{0} + \Theta^{(1)}_{11}x_{1} + \Theta^{(1)}_{12}x_{2} + \Theta^{(1)}_{13}x_{3})\\

a^{(3)}_{2}=g(\Theta^{(1)}_{10}x_{0} + \Theta^{(1)}_{11}x_{1} + \Theta^{(1)}_{12}x_{2} + \Theta^{(1)}_{13}x_{3})\\

h_{\Theta}(x)=a^{(3)}_{1}=g(\Theta^{(2)}_{10}a^{(2)}_{0} + \Theta^{(3)}_{11}a^{(2)}_{1} + \Theta^{(3)}_{12}a^{(2)}_{2} + \Theta^{(3)}_{13}a^{(2)}_{3})\\

其中g是激活函数。

这里可能不容易理解:

其实\Theta是一个矩阵:

\begin{pmatrix} \theta_{10}&\theta_{11} &\theta_{12} &\theta_{13} \\ \theta_{20}&\theta_{21} &\theta_{22} &\theta_{23} \\ \theta_{30}&\theta_{31} &\theta_{32} &\theta_{33} \end{pmatrix}

上图其实还有一个隐藏的x_{0}没有画出。就像第一个图一样,这个x_{0}是用来调节参数的。

\theta_{ij}在上图中表示:第二层的第i个神经元接受第一层的第j个特征值,形成的参数(权重)。权重乘上相应的数值得到的值(这个神经元接受前面的所有的神经元传递给他的值的和)(如上a^{(2)}_{1}是由前面x0,x1,x2,x3传递给第二层第一个神经元得到\theta_{10}x_{0}+\theta_{11}x_{1}+\theta_{12}x_{2}+\theta_{13}x_{3},再通过激活函数g映射得到数值。)

得到结论:

一个神经网络的第j层有s_{j}个单元,第(j+1)层有s_{j+1}个单元,那么从j到(j+1)层的权重矩阵属于\mathbb{R}^{s_{j+1}\times (s_{j}+1)}。即形状为s_{j}\times(s_{j}+1)

复杂神经网络(新版本)

我们再来看一下另一种解释(其实本质差不多,只不过最新的术语有些改变)

\vec{a}^{[i]}第i层输入出向量
w这个神经元的权重

这里面x就是一个特征向量矩阵,叫做0层(layer0),与上面一个版本有所不同,上面一个版本吧输入的x叫做layer1。这里面,我们把每一个圆形叫做一个“神经元”,每个神经元都有两个参数,分别是向量\vec{w}和参数b。这个向量\vec{w}的维度与其前一层神经元的个数有关,如果前一层神经元有n个那么这个向量\vec{w}就是n维,因为这样才可以出现下面图展示的:

这里可以简化为:

a^{[i]}_{1}=g(\vec{w^{[i]}_{(1)}}\cdot \vec{a}^{[i-1]}+b^{[i]}_{1})

注意:每一层的g函数是一样的,不同层的g函数可以不一样。为了统一,我们经常把输入层(layer0)叫做\vec{a}^{[0]}\vec{x}=\vec{a}^{[0]}

向前传播(预测)

接下来看一下如何前向传播(通俗点讲叫预测,注意不包含训练)

我们将预测图像显示的是1 or 0。

下面的一个图像是灰度像素展示,是一个1。

我们按照行,把每行首尾相连,组合成一个8*8=64维的向量,把它作为x(输入层,\vec{a}^{[0]})。

然后我们搭建我们的神经网络:

计算过程:

向前传播在python中实现:

已知有上面的神经网络。

\vec{w}_{1}^{[1]}=\begin{bmatrix} 1\\2 \end{bmatrix}   \vec{w}_{2}^{[1]}=\begin{bmatrix} -3\\4 \end{bmatrix}  \vec{w}_{3}^{[1]}=\begin{bmatrix} 5\\6 \end{bmatrix}

将这几个权重整合在一起:

w = np.array([[1, -3, 5],[2, 4, -6]
])

注意,是两行三列,

b_{1}^{[l]}=-1 ,b_{2}^{[l]}=1 ,b_{3}^{[l]}=2

b = np.array([-1, 1, 2])

\vec{a}^{[0]}=\vec{x}

a_in = np.array([-2, 4])

接下来要创建一个函数用来搭建每一层网络。

def dense(a_in, W, b, g):units = W.shape[1]  # 计算这一层有多少个单元a_out = np.zeros(units)  # 初始化输出for i in range(units):w = W[:, i]  # 取出W的第j列,也就是第j个单元的w向量,注意这里取出的w是1D向量z = np.dot(w, a_in) + b[i]  # 这里的a_in也是1D向量a_out[i]=g(z)   #g为激活函数return a_out

虽然已经有了网络,但是如何将已经有的网络连接起来呢?

还要建立一个函数:

def sequential(x):a1 = dense(x, W1, b1, g)a2 = dense(a1, W2, b2, g)a3 = dense(a2, W3, b3, g)a4 = dense(a3, W4, b4, g)f_x = a4return f_x

代码的高效实现

W = np.array([[1, -3, 5],[2, 4, -6]
])              #不变
B = np.array([[-1, 1, 2]])   #变成二维
X = np.array([[-2, 4]])      #变成二维def dense(A_in, W, B):Z = np.matmul(A_in, W) + B   #这个方法不支持标量A_out = g(Z)return A_out

训练网络

对于下面网络:

我们调用tensorflow库,实现下面代码:

import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([Dense(units=25,activation='sigmoid')Dense(units=15,activation='sigmoid')Dense(units=1,activation='sigmoid')]
)
from tensorflow.keras.losses import BinaryCrossentropy
model.compile(loss=BinaryCrossentropy)
model.fit(X,Y,epochs=100)

注意,这里的tensorflow由于版本问题,可能不含keras,可以直接下载keras这个包。(自己搞了半天才研究出来,大哭)

注意上面的步骤:

  1. model = Sequential(..)
  2. model.compile(loss=...)
  3. model.fit(X,y,epochs=100)

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

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

相关文章

PyTorch LSTM 单步、多步时间预测

PyTorch LSTM 单步、多步时间预测 多维输入、多维输出;单步预测、多步滚动预测 import torch import torch.nn as nn import torch.optim as optimclass LSTMModel(nn.Module):def __init__(self, input_dim, hidden_dim, num_layers, output_dim):super(LSTMMode…

【云原生】Kubernetes微服务Istio:介绍、原理、应用及实战案例

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

西南民族大学学报人文社会科学版

《西南民族大学学报(人文社会科学版)》简介 《西南民族大学学报(人文社会科学版)》(以下简称“学报”)系国家民族事务委员会主管、西南民族大学主办的民族类综合性学术期刊。创刊于1979年,2000年…

数据恢复篇:适用于 Android 视频恢复的 6 个工具

在智能手机这个动态的世界里,每一刻都被捕捉并以数字方式存储,丢失珍贵的视频可能是一种令人心碎的经历。不必担心,因为 Android 生态系统提供了大量旨在挽救这些珍贵回忆的视频恢复应用程序。 这些应用程序是强大的工具,旨在挽救…

MongoDB文档整理

过往mongodb文档: https://blog.csdn.net/qq_46921028/article/details/123361633https://blog.csdn.net/qq_46921028/article/details/131136935https://blog.csdn.net/qq_46921028/article/details/139247847 1. MongoDB前瞻 1、MongoDB概述: MongoDB是…

Java--Collection集合

一、Collection 1.1 概述 Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素【集合中只能存储引用类型】。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一…

华为智慧交通-高速公路视频云联网解决方案

华为高速公路视频云联网解决方案摘要: 智慧高速愿景智慧高速旨在实现人、车、路互信协同,提供更安全、高效、便捷的出行体验。通过全路段感知、全过程管控、全天候通行,以及智慧路段、服务区的建设,实现数字化、知识型、安全型、高…

用LangGraph搭建智能体—AI Agents in LangGraph(一)

1. 学习背景 LangGraph最近出来后如火如荼,最近AndrewNg又出了新鲜的学习课程,于是乎先了解一波。 学习地址:传送门 代码地址:传送门 废话不多说,开始干活。 2. 从头开始构建代理(Build an Agent from…

ubuntu24无法网络无法连接的问题

今天使用ubuntu的最新版24.04碰见个很奇怪的问题,所有防火墙都是关闭的,但是无法访问3306端口。 通过官方文档发现,原来新版本引入了AppArmor,进行了跟高级别的安全控制, 使用命令aa-status查看 果然在生效 这就是为什…

厦门大学学报哲学社会科学版

《厦门大学学报(哲学社会科学版)》是厦门大学主办、教育部主管的高层次的哲学社会科学综合性学术刊物,2003年底首批入选教育部“哲学社会科学名刊工程”,2012年获国家社科基金学术期刊资助。 《厦门大学学报》的前身为《厦门大学…

[经验] 孙叔敖举于海,百里奚举于市的翻译 #学习方法#学习方法#微信

孙叔敖举于海,百里奚举于市的翻译 1、孙叔敖举于海 孙叔敖,春秋时期鲁国大夫,是古代中国的著名政治家和军事家,他被誉为“孔子之后”的大贤。 孙叔敖的主要贡献在于他的外交策略和军事管理能力。在他的领导下,鲁国积极扩张其疆…

前端学习(三)之CSS

一、什么是CSS html定义网页的结构和信息(骨架血肉)css定义网页的样式(衣服)js定义用户和网页的交互逻辑(动作) 通过CSS,可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式&…

pig4cloud启动流程

环境 SpringBoot版本:2.7.16 SpringSecurity版本:5.7.11 pig4cloud版本:3.7.1-JDK8 流程图 概述 pig4cloud是对SpringSecurity的实现,其工作原理脱离不了SpringSecurity;pig4cloud启动首先SecurityAutoConfigurati…

9.11和9.9哪个大?

没问题 文心一言 通义千问

【前端】JavaScript入门及实战46-50

文章目录 46 对象(1)47 对象(2)48 属性名和属性值49 基本和引用数据类型50 对象字面量 46 对象(1) <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"text/javascript">/…

Puromycin(嘌呤霉素)— pac基因筛选抗生素

Puromycin是由Streptomyces alboniger&#xff08;白黑链霉菌&#xff09;产生的一种氨基糖苷类抗生素&#xff0c;可抑制原核细胞和真核细胞的肽基转移。Puromycin可抑制革兰氏阳性菌、多种动物细胞和昆虫细胞的生长&#xff0c;但是真菌和革兰氏阴性菌对Puromycin具有抗性&am…

Spring Boot外部配置加载顺序

官网地址&#xff1a; Externalized Configuration :: Spring Boot Spring Boot外部配置加载顺序 Spring Boot使用一种非常特定的PropertySource顺序设计&#xff0c;以便合理地覆盖值。后面的属性源可以覆盖前面定义的值(后面的优先级高于前面的)。属性源的考虑顺序如下&…

12.顶部带三角形的边框 CSS 关键字 currentColor

顶部带三角形的边框 创建一个在顶部带有三角形的内容容器。 使用 ::before 和 ::after 伪元素创建两个三角形。两个三角形的颜色应分别与容器的 border-color 和容器的 background-color 相同。一个三角形(::before)的 border-width 应比另一个(::after)宽 1px,以起到边框的作…

大屏系统类优质UI风格

大屏系统类优质UI风格

C 语言回调函数

回调函数的概念 您的理解是正确的。pFunCallBack 是一种函数指针类型&#xff0c;它定义了函数的签名&#xff08;即函数的参数类型和返回类型&#xff09;。当我们说 pFunCallBack pFun&#xff0c;我们是在声明一个变量 pFun&#xff0c;其类型是 pFunCallBack —— 即一个函…