大数据与人工智能——神经网络是如何工作的?

大数据与人工智能——神经网络是如何工作的?

我们习惯于去了解所使用工具、中间件的底层原理,本文则旨在帮助大家了解AI模型的底层机制,让大家在学习或应用各种大模型时更加得心应手,更加适合没有AI基础的小伙伴们。

一、GPT与神经网络的关系

GPT想必大家已经耳熟能详,当我们与它进行对话时,通常只需关注自己问出的问题(输入)以及GPT给出的答案(输出),对于输出内容是如何产生的,我们一无所知,它就像一个神秘的黑盒子。
在这里插入图片描述
GPT是一种基于神经网络的自然语言处理(NLP)模型,使用大量数据输入神经网络对模型进行训练,直到模型的输出在一定程度上符合我们的预期,训练成熟的模型就可以接收用户的输入,并针对输入中的关键信息给出经过“思考”后的答案。想要弄明白GPT究竟是如何“思考”的,或许我们可以从神经网络出发。

二、什么是神经网络

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

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

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

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

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

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

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

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

数据是如何输入到神经网络中的
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”, “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_的值,使损失函数的结果越来越小,也就是使预测结果更精准。
在这里插入图片描述
在这里插入图片描述
这里需要注意的是,如果学习率设置过小,则需要多次梯度下降才能到达最低点,浪费机器运行资源;如果设置过大,则可能错过最低点直接到了图中左侧的点位,因此需要根据实际情况选择一个正确的学习率。

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

四、综述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springMVC-原理及入门案例

基本介绍 (1)springMVC是以spring为基础&#xff0c;因此在使用时&#xff0c;需要先将spring jar引入. (2)SpringMVC是MVC框架,工作在WEB层&#xff0c;替代Strts2.可以超越struts2框架. &#xff08;3&#xff09;SpringMVC相对于Struts2来说&#xff0c;更加简洁&#xff0…

【字符串】ABC324E

退役啦&#xff0c;接下来的博客全是图一乐啦 E - Joint Two Strings 题意 思路 统计两个指针的方案数一定是枚举一个&#xff0c;统计另一个 然后因为拼起来之后要包含 t 这个字符串&#xff0c;隐隐约约会感觉到和前缀后缀子序列有关 考虑预处理每个 s[i] 的最长公共前…

本地 SIEM 与云原生 SIEM:哪一种适合您?

安全信息和事件管理 (SIEM) 解决方案对于各种规模的组织监控其环境中的安全威胁至关重要。 SIEM 解决方案收集并审查来自不同来源&#xff08;例如防火墙、入侵检测系统和 Web 服务器&#xff09;的安全日志。随后可以利用这些数据来检测潜在威胁、检查安全事件并针对网络攻击…

某大厂机器视觉工程师被坑100万!竞业协议到底有多少坑?

特别注意竞业协议是企业与员工双方共同意愿下签订的。如果还在这个行业做&#xff0c;尽量不要去签订竞业协议。 今天看到&#xff0c;看到某大厂员工因为违反竞业协议&#xff0c;被要求赔偿100多万还要返还期间发放竞业协议的补偿金&#xff1b; 实不相瞒&#xff0c;我也被…

java集合的迭代器与遍历

文章目录 迭代器Iterator1、什么是Iterator2&#xff0c;iterator接口的API3、Irerator()方法细节解释4. Irerator的原理示意图5. forEach循环与Iterator遍历的区别与联系 ListIterator1.ListIterator的概述(1) 概念(2) 解析 2.ListIterator的生成3.ListIterator的API4.ListIte…

uniapp 单选按钮 选中默认设备

需求1&#xff1a;选中默认设备&#xff0c;113 和114 和139都可以选中一个默认设备 选中多个默认设备方法&#xff1a; async toSwitch(typeItem, title) {const res await this.setDefaultDev(typeItem.ibdr_devsn, typeItem.ibdr_pid)if (!res) {this.common.toast(切换默…

空气污染大屏,UI可视化大屏设计(PSD源文件)

大屏组件可以让UI设计师的工作更加便捷&#xff0c;使其更高效快速的完成设计任务。现分享科技空气污染大数据、空气污染大数据平台、大气环境信息资源中心、大气检测大数据中心、环境信息资源中心界面的大屏Photoshop源文件&#xff0c;开箱即用&#xff01; 若需 更多行业 相…

input 获取焦点后样式的修改

一、实现目标 1.没有获取焦点时样子 2.获取焦点时 代码&#xff1a; <input class"input"placeholder"请输入关键字" input"loadNode" />css .input {border-radius: 14px;border:1px solid #e4e4e4;margin: 5px;margin-top: 10px;wi…

Java - 异常(三)- 声明异常(throws)和手动抛出异常throw

目录 6.3 方式2&#xff1a;声明异常&#xff08;throws&#xff09; 6.4 手动抛出异常throw 6.4.1 概述 6.4.2 使用格式&#xff1a; 6.4.3 实例代码 6.4.4 为什么要手动抛出异常对象&#xff1f; 6.4.5 如何理解“自动”和“手动” 抛出异常对象 6.4.6 注意点 ❓面试…

基于SSM架构的超市管理系统设计

基于SSM架构的超市管理系统设计 目录 基于SSM架构的超市管理系统设计 1 环境及工具1.1 IDEA软件安装1.2 JDK环境配置1.3 MySQL数据库安装1.3.1常规情况1.3.2非常规情况 1.4 Tomcat安装 2 部署与设计2.1 数据库信息创建2.2项目创建与部署 3 相关说明4 功能操作说明4.1 管理员操作…

物联网在能源管理中的应用——青创智通工业物联网解决方案

随着全球能源资源的日益紧张和环境问题的日益突出&#xff0c;能源管理已成为当今社会的重要议题。物联网技术的快速发展为能源管理提供了新的解决方案。本文将介绍物联网在能源管理中的应用及其优势。 一、物联网在能源管理中的应用 1. 智能电网 智能电网是物联网在能源管理中…

el-date-picker限制选择7天内禁止内框选择

需求&#xff1a;elementPlus时间段选择框需要满足&#xff1a;①最多选7天时间。②不能手动输入。 <el-date-picker v-model"timeArrange" focus"timeEditable" :editable"false" type"datetimerange" range-separator"至&qu…

电脑手机文件无线互传方法?利用备忘录更方便

在忙碌的工作生活中&#xff0c;文件传输和分享已经成为了我们日常生活中的一部分。从厚厚的文件夹到电子化的文件&#xff0c;从线下到线上&#xff0c;这一转变让我们的工作和生活变得更加方便高效。 而在这个数字化时代&#xff0c;备忘录成为了我们实现电脑手机文件无线互…

ELADMIN - 免费开源 admin 后台管理系统,基于 Spring Boot 和 Vue ,包含前端和后端源码

一款简单好用、功能强大的 admin 管理系统&#xff0c;包含前端和后端源码&#xff0c;分享给大家。 ELADMIN 是一款基于 Spring Boot、Jpa 或 Mybatis-Plus、 Spring Security、Redis、Vue 的前后端分离的后台管理系统。 ELADMIN 的作者在 Github 和 Gitee 上看了很多的项目&…

ceph的osd盘删除操作和iscsi扩展

ceph的osd盘删除操作 拓展:osd磁盘的删除(这里以删除node1上的osd.0磁盘为例) 1, 查看osd磁盘状态 [rootnode1 ceph]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.00298 root default -3 0.00099 host node10 hdd 0.000…

利用python批量压缩图教程:如何轻松减小图片大小

在日常的编程工作中&#xff0c;我们经常需要处理图像&#xff0c;例如上传、下载、显示、编辑等。有时候&#xff0c;我们需要对图像进行压缩&#xff0c;以减少占用的空间和带宽&#xff0c;提高加载速度和用户体验。那么&#xff0c;如何用Python来实现图像压缩呢&#xff1…

HarmonyOS4.0从零开始的开发教程14Web组件的使用

HarmonyOS&#xff08;十二&#xff09;Web组件的使用 1 概述 相信大家都遇到过这样的场景&#xff0c;有时候我们点击应用的页面&#xff0c;会跳转到一个类似浏览器加载的页面&#xff0c;加载完成后&#xff0c;才显示这个页面的具体内容&#xff0c;这个加载和显示网页的…

​Linux Ubuntu环境下安装配置Docker 和Docker、compose、mysql、中文版portainer

​Linux Ubuntu环境下安装配置Docker 和Docker、compose、mysql、中文版portainer 这篇文章探讨了在Linux Ubuntu环境下安装和配置Docker及其相关工具的过程。首先介绍了Docker的基本概念&#xff0c;然后详细讲解了在Ubuntu系统上的安装步骤。随后&#xff0c;文章涵盖了Dock…

DevEco Studio 鸿蒙(HarmonyOS)项目结构

DevEco Studio 鸿蒙&#xff08;HarmonyOS&#xff09;项目结构 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、项目结构 创建简单的Hello World移动应用项目结构如下图 由上到下说明各个文件夹的作用 .hvigor&#xff1a;存…

【HarmonyOS】【DevEco Studio】安装教程及环境配置问题解决

目录 一、DevEco Studio 安装二、配置环境ohmp安装报错问题解决方法一&#xff1a;注册表删除数值&#xff08;没解决&#xff09;方法二&#xff1a;进入DevEco Studio点击Settings进入设置&#xff08;没解决&#xff09;方法三&#xff1a;自己去官网下载ohmp的包安装&#…