一文带你了解神经网络是如何学习预测的

文章目录

1、GPT与神经网络的关系

2、什么是神经网络

3、神经网络是如何计算的

数据是如何输入到神经网络中的

神经网络是如何进行预测的

神经网络是如何进行学习的

4、小结


1、GPT与神经网络的关系

GPT想必大家已经耳熟能详,当我们与它进行对话时,通常只需要关注自己问出的问题(输入)以及GPT给出的答案(输出),对于输出内容是如何产生的,我们一无所知,它就像一个神秘的黑盒子。

GPT是一种基于神经网络的自然语言处理(NLP)模型,使用大量数据输入神经网络对模型进行训练,直到模型的输出在一定程度上符合我们的预期,训练成熟的模型就可以接收用户的输入,并针对输入中的关键信息给出经过“思考”后的答案。想要弄明白GPT究竟是如何“思考”的,或许我们可以从神经网络出发。

2、什么是神经网络

那么,神经网络到底是什么呢?或者说,为什么是神经网络?

高中的生物学告诉我们,人类的神经系统由数以亿计的神经元连接而成,它们是生物学上的细胞,有细胞体、树突、轴突等主要结构,不同神经元之间的树突与轴突通过突触与其它神经元相互连接,形成复杂的人脑神经网络。

人工智能为了使机器获得接近人类的智力,尝试效仿人脑的思考过程,创造出了一种模仿人脑神经元之间相互连接的计算模型 —— 神经网络。它由多层神经元组成,每个神经元接收输入并产生相应的输出。根据上述定义,图 1 中黑盒子的内部结构已初具轮廓,下图中的每个圆圈都代表一个神经元,神经元具有计算能力,可以将计算出来的结果传递到下一个神经元。

在生物学中,大脑的结构越简单,智力也就越低;相应地,神经系统越复杂,能处理的问题越多,智力也就越高。人工神经网络也是如此,越复杂的网络结构计算能力越强大,这也是为什么发展出了深度神经网络。之所以被称为“深度”,是因为它具有多个隐藏层(即上图中纵向神经元的层数),相对于传统的浅层神经网络,深度神经网络具有更多的层级结构。

训练深度神经网络的过程就叫做深度学习。构建好深度神经网络之后,我们只需要将训练数据输入到神经网络中,它就会自发地学习数据中的特征。比如说我们想要训练一个深度神经网络来识别猫,只需要将大量不同种类、不同姿势、不同外观的猫的图片输入到神经网络中让它学习。训练成功后,我们将一张任意的图片输入到神经网络中,它会告诉我们里面是否有猫。

3、神经网络是如何计算的

现在,我们已经知道了什么是神经网络以及它的基本结构,那么神经网络中的神经元是如何对输入数据进行计算的呢?

在此之前,我们要解决一个问题:数据是如何输入到神经网络中的?下面以图像和文本类型的数据为例讲解。

数据是如何输入到神经网络中的

(1)图像输入处理

想象一个画面:当我们把一张图片放大到一定程度时,可以看到一格一格的小方块。这个小方块就称为像素点,一张图片的像素点越多,说明像素越高,图片越清晰。每个像素点仅由一种颜色构成,光学中的三原色包含红色、绿色、蓝色,通过不同程度地混合这三种颜色可以产生出所有其他颜色。在 RGB 模型中,每种颜色的强度可以用一个数值来表示,通常在 0 到 255 之间。红色的强度值为 0 表示没有红色光,255 表示最大强度的红色光;绿色和蓝色的强度值也是类似的。

为了存储一张图像,计算机要存储三个独立的矩阵,这三个矩阵分别与图像的红色、绿色和蓝色的强度相对应。如果图像的大小是 256 * 256 个像素,那么在计算机中使用三个 256 * 256 的矩阵(二维数组)就能表示这张图像。可以想象将三个矩阵表示的颜色重叠堆放在一起,便可显现出图像的原始样貌。

现在我们得到了图像在计算机中的表示方式,那么如何将它输入到神经网络呢?

通常我们会把上述三个矩阵转化为一个向量,向量可以理解成 1 * n(行向量)或 n * 1(列向量)的数组。那么这个向量的总维数就是 256 * 256 * 3,结果是 196608。在人工智能领域中,每一个输入到神经网络的数据都被叫做一个特征,那么上面的这张图像中就有 196608 个特征。这个 196608 维的向量也被叫做特征向量。神经网络接收这个特征向量作为输入,并进行预测,然后给出相应的结果。

(2)文本输入处理

文本是由一系列字符组成的,首先需要将文本划分成有意义的单词,这个过程称为分词。在分词后,构建一个由出现的所有单词或部分高频单词组成的词汇表(也可以使用已有的词汇表)。词汇表中的每个单词都会被分配一个唯一索引,这样可以将文本转换为离散的符号序列,方便神经网络进行处理。在输入神经网络之前,通常会将文本的符号序列转换为密集的向量表示。

以文本 “How does neural network works?” 为例:

  • 分词:["how", "does", "neural", "network", "works"]

  • 构建词汇表:{"how": 0, "does": 1, "neural": 2, "network": 3, "works": 4}

  • 序列化文本数据:["how", "does", "neural", "network", "works"] -->[0, 1, 2, 3, 4]

  • 向量化:

#此处以one-hot向量表示法为例:
[[1, 0, 0, 0, 0][0, 1, 0, 0, 0][0, 0, 1, 0, 0][0, 0, 0, 1, 0][0, 0, 0, 0, 1]]

最后,将向量序列作为输入,给神经网络进行训练或预测。

至此我们已经知道了数据以怎样的形式输入到神经网络中,那么神经网络是如何根据这些数据进行训练的呢?

神经网络是如何进行预测的

首先明确模型训练和预测的区别:训练是指通过使用已知的数据集来调整模型的参数,使其能够学习到输入和输出之间的关系;预测是指使用训练好的模型来对新的输入数据进行预测。

神经网络的预测其实是基于一个很简单的线性变换公式:

图片

其中,x表示特征向量,w是特征向量的权重,表示每个输入特征的重要程度,b表示阈值,用于影响预测结果。公式中的 dot () 函数表示将 w和 x进行向量相乘。举例:如果一个输入数据有 i个特征,代入公式计算结果为:

图片

如何理解这个公式呢?假设你需要决策周末是否去公园划船,你对此犹豫不决,需要神经网络帮你做决定。决定是否去划船有三个因素:天气是否晴朗温暖、地点是否远近适中、同行玩伴是否合心意。实际情况是出行那天天气为阴且偶有阵风、地点在 20km 外的偏远郊区、同行玩伴是心仪已久的大帅哥。这三个因素即为输入数据的特征向量 x=[x1, x2, x3],我们需要根据特征对结果的影响来设置特征值,如 “天气不好” 和 “地点偏远” 对结果具有负向的影响,我们可以把它设为 - 1,“同行玩伴是心仪已久的大帅哥” 显然对结果有大大的正向影响,可以把它设为 1,即特征向量 x=[-1, -1, 1]。接下来,需要根据你的偏好来设置三个特征的权重,也就是每个因素对你最终决策的影响程度。如果你不在乎天气和地点,只要与大帅哥同行便风雨无阻,那么可以将权重设置为 w=[1, 1, 5];如果你是个懒狗,那你可能会设置权重为 w=[2, 6, 3];总之,权重是根据对应特征的重要程度来确定的。

我们选择第一组权重 w=[1, 1, 5],特征向量为 x=[-1, -1, 1], 并设置阈值 b=1,假设结果 z ≥ 0 表示去,z < 0 表示不去,计算预测结果 z = (x1w1 + x2w2 + x3*w3) + b = 4 > 0,因此神经网络给出的预测结果是:去公园划船。

上面使用的公式

图片

本质上是一种逻辑回归,用于将输入数据映射到二分类的概率输出。逻辑回归通常使用一个特定的激活函数来实现将 z值到 [0, 1] 的映射关系,即 Sigmoid 函数,它将线性变换的结果通过非线性映射转化为概率值。通常,大于等于 0.5 的概率值被视为正类,小于 0.5 的概率值被视为负类。

Sigmoid 函数的公式和图像如下所示:

图片

除了能将结果输出范围控制在 0 到 1 之间,Sigmoid 函数(或其他激活函数)另外一个重要作用就是将线性变换的结果进行非线性映射,使神经网络可以学习和表示更加复杂的非线性关系。如果没有激活函数,神经网络只能解决简单的线性问题;加入激活函数之后,只要层数足够多,神经网络就能解决所有问题,因此激活函数是必不可少的。

神经网络是如何进行学习的

得到预测结果后,神经网络会通过损失函数判断预测结果是否准确,如果不够准确,神经网络会进行自我调整,这就是学习的过程。

损失函数用于衡量模型的预测结果与真实标签之间的误差。通过将预测值与真实值进行比较,损失函数提供了一个数值指标,反映了模型当前的预测性能。较小的损失值表示模型的预测结果与真实标签更接近,而较大的损失值表示预测误差较大。下面介绍一个常用于二分类问题的损失函数(对数损失):

图片

图片

神经网络学习的目的,就是通过调整模型的参数使损失函数达到最小值,从而改善模型的预测性能,这个过程也称为模型的训练。梯度下降算法可以解决这一问题,通过该算法找到合适的 w(特征的权重)和 b(阈值),梯度下降算法会一步一步地改变 w 和 b的值,使损失函数的结果越来越小,也就是使预测结果更精准。

图片

这里需要注意的是,如果学习率设置过小,则需要多次梯度下降才能到达最低点,浪费机器运行资源;如果设置过大,则可能错过最低点直接到了图中左侧的点位,因此需要根据实际情况选择一个正确的学习率。

神经网络的计算过程主要有两个步骤:正向传播和反向传播。正向传播用于计算神经元的输出,也就是上述对输入特征进行加权求和、并通过激活函数进行非线性变换的过程;反向传播用于更新优化模型参数,通过计算损失函数关于模型参数的梯度,从输出层向输入层反向传播梯度的过程(反向传播涉及大量的数学计算,感兴趣的读者可以深入了解)。

4、小结

综上所述,神经网络训练和学习的过程其实就是对模型参数进行不断调优、减少预测损失值过程。经过充分训练后,模型能够从输入数据中学习到有效的特征表示和权重分配,从而能够对未见过的数据进行准确的预测。训练完成的神经网络模型可以应用于各种实际问题。比如,在图像分类任务中,卷积神经网络可以根据输入图像的特征自动识别物体或图案;在自然语言处理任务中,循环神经网络可以理解和生成文本;在推荐系统中,多层感知机神经网络可以根据用户的历史行为进行个性化推荐。

引用:

https://cloud.tencent.com/developer/article/1384762

http://zhangtielei.com/posts/blog-nn-visualization.html

https://blog.csdn.net/pingchangxin_6/article/details/79754384

 参考:神经网络是如何工作的? | 京东云技术团队 - 京东云开发者的个人空间 - OSCHINA - 中文开源技术交流社区

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

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

相关文章

桌面待办,电脑桌面怎么设置待办事项

在忙碌的工作生活中&#xff0c;我们经常会有许多事情需要处理&#xff0c;为了提高工作效率和管理时间&#xff0c;很多人都有一套自己的桌面待办事项管理方法。那么&#xff0c;如何利用电脑桌面待办事项来提高工作效率&#xff0c;电脑桌面怎么设置待办事项呢&#xff1f; …

【Unity】persistentDataPath、streamingAssetsPath和dataPath

介绍 我们在用Unity进行开发时&#xff0c;资源路径是我们最常用到的&#xff0c;下面我就来简单介绍一下几种常用的路径。 1.dataPath dataPath是包含游戏数据文件夹的路径&#xff0c;是app程序包安装路径 Windows: xxx /Assets &#xff08;如下图&#xff09; Mac: xxx…

C语言初学12:强制类型转换

一、强制数据类型转换举例 1.1 double赋值给int #include<stdio.h> int main() {double sum 18, count 5;int mean;mean sum / count;printf("Value of mean : %d\n", mean);} 执行结果&#xff1a; double赋值给int&#xff0c;小数部分会删除&#xff…

Linux 学习笔记(16)

十六、 计划任务 在很多时候为了自动化管理系统&#xff0c;我们都会用到计划任务&#xff0c;比如关机&#xff0c;管理&#xff0c;备份之类的操作&#xff0c;我 们都可以使用计划任务来完成&#xff0c;这样可以是管理员的工作量大大降低&#xff0c;而且可靠度更好。 l…

vue3模块化引用组件和引用ts,调用ts中的接口

以简单的登录功能为例子 1.在util中创建loginValidators.ts import { ref, reactive } from vueinterface User{email: string;password: string; }export const loginUserreactive<User>({email: ,password: })interface Rules{email: {required: boolean;message: …

可视化展示与交互编辑:探索3D Web轻量化平台HOOPS WEB Platform在BIM中的新可能性

随着数字技术的飞速发展&#xff0c;建筑行业也在不断迈向数字化转型的道路。在这个过程中&#xff0c;BIM&#xff08;Building Information Modeling&#xff0c;建筑信息模型&#xff09;技术已经成为建筑设计、施工和管理领域中的一项重要工具。 而在BIM的应用中&#xff…

金融知识分享系列之:MACD指标精讲

金融知识分享系列之&#xff1a;MACD指标精讲 一、MACD指标二、指标原理三、MACD指标参考用法四、MACD计算步骤五、MACD分析要素六、根据快线DIF位置判断趋势七、金叉死叉作为多空信号八、快线位置交叉信号九、指标背离判断行情反转十、差离值的正负十一、差离值的变化十二、指…

Nacos源码流程图

1.Nacos1.x版本服务注册与发现源码 流程图地址&#xff1a;https://www.processon.com/view/link/634695eb260d7157a7bc6adb 2.Nacos2.x版本服务注册与发现源码 流程图地址&#xff1a;https://www.processon.com/view/link/634695fb260d7157a7bc6ae0 3.Nacos2.x版本GRPC…

【海贼王的数据航海】排序——直接选择排序|堆排序

目录 1 -> 选择排序 1.1 -> 基本思想 1.2 -> 直接选择排序 1.2.1 -> 代码实现 1.3 -> 堆排序 1.3.1 -> 代码实现 1 -> 选择排序 1.1 -> 基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素&#xff0c;存放在序列的起始位置&…

315 腾讯测开一面

问题复盘 1.TCP和UDP的区别&#xff1b;网络中七层协议详细解释 2.cookie和session的区别——python中request的用法 3.cookie和session的生命周期 cookie的生命周期&#xff1a; 持久性cookie&#xff1a;如果创建时指定了过期时间&#xff08;‘Expires’属性&#xff0…

STL:List从0到1

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

MySQL-----事务

一 事务简介 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一 个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 例如:银行转账 张三 ---(转账1000元)---> 李四 在进行…

.NET开源快速、强大、免费的电子表格组件

今天大姚给大家分享一个.NET开源&#xff08;MIT License&#xff09;、快速、强大、免费的电子表格组件&#xff0c;支持数据格式、冻结、大纲、公式计算、图表、脚本执行等。兼容 Excel 2007 (.xlsx) 格式&#xff0c;支持WinForm、WPF和Android平台&#xff1a;ReoGrid。 项…

Spring Chache入门详解、配套小案例

简介&#xff1a;Spring Cache是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要添加一个注解就能实现缓存功能。 Spring Cache提供了一层抽象&#xff0c;底层可以切换不同的缓存实现&#xff0c;如下&#xff1a; EHCacheCaffeineRedis (这篇帖子&#xff…

下载指定版本的pytorch

下载网址&#xff1a;https://download.pytorch.org/whl/torch_stable.html 参考博客网址&#xff1a;https://blog.csdn.net/wusuoweiieq/article/details/132773977

基于C++的反射功能

需求&#xff1a; 利用C的发射机制&#xff0c;实现根据字符串创建实例对象。 代码&#xff1a; #ifndef OBJECT_H #define OBJECT_H#include <string> #include <map>typedef void* (*Constructor)();class CObjectFactory { public:static void registerClass…

【Git版本控制系统】:起步

目录 前言 版本控制 集中式与分布式的区别 Windows安装Git 核心 文件状态 工作区域 基本工作流程 配置用户信息 获取帮助 在线资源 前言 本篇文件的环境是Windows环境下实现。 在日常工作中git少不了&#xff0c;所以编写本篇文章介绍Git基础&#xff0c;专栏会不…

Linux/secret

Enumeration nmap 第一次扫描发现系统对外开放了22&#xff0c;80和3000端口&#xff0c;端口详细信息如下 可以看到22端口对应的是ssh服务&#xff0c;80和3000都是http服务&#xff0c;80端口使用nginx&#xff0c;3000使用了Node.js TCP/80 可以先从80端口开始探索&…

网络原理(1)——UDP协议

目录 一、应用层 举个例子&#xff1a;点外卖 约定数据格式简单粗暴的例子 客户端和服务器的交互&#xff1a; 序列化和返序列化 xml、json、protobuffer 1、xml 2、json 3、protobuffer 二、传输层 端口 端口号范围划分 认识知名的端口号 三、UDP协议 端口 U…

数据结构之顺序表(包学包会版)

目录 1.线性表 2.顺序表 2.1概念及结构 2.2接口实现 3.总结 halo&#xff0c;又和大家见面了&#xff0c;今天要给大家分享的是顺序表的知识&#xff0c;跟着我的脚步&#xff0c;包学包会哦~ 规矩不乱&#xff0c;先赞后看&#xff01; ps&#xff1a;&#xff08;孙权…