科普神文,带你了解大模型的前世今生(一)

科普神文,带你了解大模型的前世今生(一)

AI大模型是当今最热门的科技领域之一,它有一个核心的概念,就是神经元网络模型,或者简称为神经网络。今天我将开启一个系列,为大家讲讲大神经网络模型,今天是整个系列的第一章。

对之前科普系列感兴趣的可以点击以下连接查看文章合集。大模型科普神文合集

神经网络模型是如何诞生的?

神经网络模型是人工智能中最强大和最广泛使用的工具之一。它们可以从数据中学习,并执行各种任务,如图像识别、自然语言处理、语音合成等。但你知道神经网络模型是如何诞生的吗?它们背后有什么故事吗?在这篇文章中,我将带你探索神经网络模型的起源和演变,演变过程也是由简到繁,大家在阅读过程中也能逐步建立起自己的认知。

先聊聊真实的神经元

神经网络的灵感来源于生物神经系统,特别是人类的大脑。大脑是人类最复杂和最神秘的器官之一,它可以处理各种各样的信息,控制我们的行为和思维,创造出无穷的可能。那么,大脑是如何工作的呢?科学家们对此一直充满了好奇和探索。 首先,我们要明白,人类神经元是一种能够传递和处理信息的细胞,它们之间通过突触连接,形成复杂的神经网络。神经元有三个主要部分:树突、细胞体和轴突。树突是神经元的输入端,它们可以接收来自其他神经元或感觉器官的信号;细胞体是神经元的核心,它包含了细胞的基本结构和功能;轴突是神经元的输出端,它可以将信号传送到其他神经元或效应器官。神经元的结构大致如上图所示。

我们不妨用当我们看到一只猫咪忍不住感叹好可爱这一场景来举例,看看这个过程中神经元发挥了什么作用。

  • 在你看到一只猫咪的例子中,信息输入是经由猫反射的光进入人眼中的成像。视网膜上成像后,对应位置的视神经元接受刺激被激活,将光信号转化为电信号。
  • 电信号在神经元之间传递,被刺激得神经元会根据传递过来的电信号得强度决定是否继续向后传递。
  • 最终经过多个层次的处理,负责认知与记忆得神经元被激活,这部分神经元大部分是你最初认知猫咪时被激活的神经元。

在这个过程中,神经元的激活和连接是动态变化的,它们可以根据信息的重要性、频率和关联性进行调整,来决定是否将信号向下一个神经元,或者说哪一个神经元进行传递。

神经元的诞生:连接主义

神经网络模型的灵感来源于我们大脑中的生物神经元,它们也由多个输入、输出和隐藏层组成,每一层都有许多的神经元。神经网络模型也有类似于树突、细胞体和轴突的结构,它们可以接收、处理和传递信息。不过,神经网络模型的信息是以数值的形式表示的,它们之间的连接是以权重的形式表示的,它们的激活是以函数的形式表示的。 使用神经元作为人工智能的模型的想法可以追溯到20世纪初,当时一些心理学家和神经科学家提出了连接主义理论。连接主义是一种强调神经元之间的连接在信息处理和学习中起作用的理论。根据连接主义,大脑不是一个静态和固定的结构,而是一个动态和适应的系统,它可以根据环境和经验改变其连接和功能。

连接主义的先驱之一是唐纳德·赫布,他在1949年提出了赫布学习规则。赫布学习规则是一个简单而直观的原则,它表明"一起激活的神经元,就会一起连接"。换句话说,如果两个神经元同时被激活,它们之间的连接就会被加强,反之亦然。这个规则意味着大脑可以从经验中学习,并在刺激和反应之间形成联系。这种连接的逻辑也就是上文中我们提到的神经元信号传递选择的基础逻辑。

我们可以结合蚂蚁找到食物后,是怎么确定最佳搬运路线的现实案例来帮助理解。

  • 每一只蚂蚁在最开始都只是随机选择一条路线,并且在搬动过程中留下信息素作为记号,这个就是激活的过程。
  • 这样,众多蚂蚁就会在食物和蚁穴之间留下许多搬运路线。在路程最短、中间障碍又最少的那条路线上,相同时间内一只蚂蚁往返的次数最多,在路上留下的信息素的浓度自然也就最高,这就是连接增强的过程。
  • 其他蚂蚁就会越来越聚集到这条信息素浓度最高的路线上来,然后留下越来越高的信息素浓度,这就是形成联系的过程。

单个神经元的模型抽象:M-P模型

然而,如何用数学和计算的方式来模拟单个神经元的行为呢?这个问题在1943年由沃伦·麦克洛克和沃尔特·皮茨回答,当时他们提出了第一个正式的神经元模型,称为M-P模型。M-P模型是一个简单而抽象的生物神经元的表示,如下图所示。

M-P模型由三部分组成:输入、权重和输出。输入是来自其他神经元或外部源的信号,它们可以是1或-1,表示激活或未激活的状态。权重是反映神经元之间连接的强度和方向的参数,它们可以是正的或负的,表示兴奋或抑制的效果。输出是神经元发送给其他神经元或外部目标的信号,它也是1或-1,表示激活或未激活的状态。

M-P模型的输出由一个简单的规则决定:如果输入的加权和大于一个阈值,输出就是1;否则,输出就是-1。数学上,这个规则可以表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> y = f ( ∑ i = 1 n w i x i − θ ) y = f(\sum_{i=1}^n w_i x_i - \theta) </math>y=f(i=1∑nwixi−θ)

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> x i x_i </math>xi是第i个输入, <math xmlns="http://www.w3.org/1998/Math/MathML"> w i w_i </math>wi是第i个权重, <math xmlns="http://www.w3.org/1998/Math/MathML"> θ \theta </math>θ是阈值, <math xmlns="http://www.w3.org/1998/Math/MathML"> f f </math>f是一个阶跃函数,如果参数是正的,就返回1,否则返回-1。

M-P模型是一个二元阈值单元,它可以通过调整权重和阈值来执行简单的逻辑运算,如与、或、非等。例如,下表显示了如何用M-P模型实现与运算。

<math xmlns="http://www.w3.org/1998/Math/MathML"> x 1 x_1 </math>x1 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 2 x_2 </math>x2 <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y
-1 -1 -1
-1 1 -1
1 -1 -1
1 1 1

为了实现这个,我们可以设置 <math xmlns="http://www.w3.org/1998/Math/MathML"> w 1 = w 2 = 1 w_1 = w_2 = 1 </math>w1=w2=1和 <math xmlns="http://www.w3.org/1998/Math/MathML"> θ = 1.5 \theta = 1.5 </math>θ=1.5。然后,我们可以验证输出 <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y与输入 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 1 x_1 </math>x1和 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 2 x_2 </math>x2的逻辑与是相同的。

M-P模型是用数学和计算来模拟单个神经元行为的第一次尝试,它为神经网络模型的发展奠定了基础。然而,M-P模型也非常有限和不现实,因为它忽略了生物神经元的许多特征,如信号的连续和非线性性质,权重的可变性和可塑性,以及连接的多样性和复杂性。

多神经元的互动:Hopfield网络

那么多个神经元之间的互动呢?我们如何模拟一个可以存储和回忆信息的神经元网络呢?这个问题在1982年由约翰·霍普菲尔德回答,当时他提出了霍普菲尔德网络,一种可以作为内容寻址记忆系统的循环神经网络。

霍普菲尔德网络可以将一组模式作为网络的稳定状态存储,并在给定一个模式的部分或噪声版本时回忆一个模式。模式是二元向量,表示单元的期望状态,它们可以通过赫布学习规则被网络学习。赫布学习规则是一个简单而直观的原则,它表明两个单元之间的权重与它们的状态的乘积成正比。数学上,这个规则可以表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> w i j = ∑ p = 1 m x i ( p ) x j ( p ) w_{ij} = \sum_{p=1}^m x_i^{(p)} x_j^{(p)} </math>wij=p=1∑mxi(p)xj(p)

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> x i ( p ) x_i^{(p)} </math>xi(p)是第p个模式中单元i的状态,m是模式的数量。赫布学习规则意味着如果它们在模式中倾向于有相同的状态,两个单元之间的权重是正的,如果它们在模式中倾向于有相反的状态,则是负的。

霍普菲尔德网络可以通过根据一个简单的规则更新每个单元的状态来回忆一个模式:如果来自其他单元的输入的加权和大于零,状态就是1;否则,状态就是-1。数学上,这个规则可以表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> x i = f ( ∑ j = 1 n w i j x j ) x_i = f(\sum_{j=1}^n w_{ij} x_j) </math>xi=f(j=1∑nwijxj)

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> x i x_i </math>xi是单元i的状态, <math xmlns="http://www.w3.org/1998/Math/MathML"> w i j w_{ij} </math>wij是单元i和单元j之间的权重, <math xmlns="http://www.w3.org/1998/Math/MathML"> x j x_j </math>xj是单元j的状态, <math xmlns="http://www.w3.org/1998/Math/MathML"> f f </math>f是一个阶跃函数,如果参数是正的,就返回1,否则返回-1。

霍普菲尔德网络可以同步或异步地更新每个单元的状态,意味着所有单元同时更新或者一个单元一次更新。更新过程可以重复,直到网络达到一个稳定状态,它是一个存储的模式或者它们的组合。霍普菲尔德网络也可以被视为一个最小化能量函数的系统,它被定义为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> E = − 1 2 ∑ i = 1 n ∑ j = 1 n w i j x i x j E = -\frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij} x_i x_j </math>E=−21i=1∑nj=1∑nwijxixj

能量函数反映了单元的状态和连接的权重之间的和谐或一致的程度。能量越低,和谐越高。霍普菲尔德网络可以被证明在每次更新时降低能量,并收敛到能量函数的一个局部最小值,它对应于网络的一个稳定状态。

我们可以把扫雷游戏看作是一个Hopfield网络。

  • 其中每个方格就是一个神经元,每个神经元的状态就是它是不是一个地雷。
  • 网络的能量就是方格中的数字和它周围的地雷数之间的差异的平方和。也就是说,如果一个方格中的数字和它周围的地雷数相等,那么它的能量就是零;如果不相等,那么它的能量就是一个正数。
  • 网络的总能量就是所有方格的能量之和。我们的目标就是让网络的总能量达到最低,也就是让所有方格中的数字和它周围的地雷数都相等。

那么,我们如何用扫雷游戏来存储和检索模式呢?我们可以这样做:

  • 存储模式:我们可以先设计一个扫雷游戏的地图,在确定地雷网格后,标记出所有网格应该记录的地雷数量。这样,我们就得到了一个数字地图,也就是Hopfield网络中的模式。这个数字地图对应的网络的总能量就是最低的,因为每个方格中的数字和它周围的地雷数都相等了。

  • 检索模式:我们可以先给网络一个初始状态,也就是随机地把一些方格设置为地雷,其他的方格设置为非地雷。这样,网络的总能量就是一个较高的值,因为有些方格中的数字和它周围的地雷数不相等了。然后,我们可以让网络自动调整神经元的状态,也就是让玩家点击方格来打开它,或者在方格上标记一个旗子来表示它是一个地雷。每次点击或标记一个方格,都会改变它和它周围的方格的能量,从而改变网络的总能量。网络会自动寻找能量最低的状态,也就是最接近存储的模式的状态。如果我们点击或标记的方格足够多,那么网络就能够成功地检索出存储的模式,也就是我们设计的扫雷游戏的地图。

总体来说,扫雷游戏中标记数字的网格就是霍普菲尔德网络所需要记录的模式,在模式确定的情况下,玩家只需要从一个点出发逐步标记,就能获取整张地图的原始记忆,也就是所有地雷的点位。从这个角度我们就很容易理解,霍普菲尔德网络在仅仅记录模式的情况,如何通过部分的点位来获取原始记忆的全貌。

霍普菲尔德网络是一个简单而优雅的模型,它可以展示神经网络记忆的基本原理,如分布式表示、联想回忆和错误修正。然而,霍普菲尔德网络也有一些缺点和限制,如低存储容量、伪状态和缺乏泛化能力。

总结

今天这篇文章,我从人类神经元本身的作用机理入手,给大家介绍了神经元网络模型是如何诞生的。并通过案例,给大家介绍了神经元网络模型中最为基本的两个基础模型,M-P模型以及Hopfield网络。

希望大家通过今天的科普文,能建立神经元网络模型的基础概念,从而理解AI大模型目前所拥有的能力。比如模型的记忆是从何而来,相信知道Hopfield网络后,大家已经有了答案。

下次,我将在今天内容的基础上,继续延展,为大家介绍神经元网络模型中核心的BP算法以及深度学习的由来,请大家持续关注哦。如果你有任何问题或建议,欢迎在评论区留言,我们会尽快回复你。谢谢你的阅读,下次再见。😊

相关推荐
摇滚侠20 小时前
Spring Boot 3零基础教程,IOC容器中组件的注册,笔记08
spring boot·笔记·后端
程序员小凯1 天前
Spring Boot测试框架详解
java·spring boot·后端
你的人类朋友1 天前
什么是断言?
前端·后端·安全
程序员小凯1 天前
Spring Boot缓存机制详解
spring boot·后端·缓存
i学长的猫1 天前
Ruby on Rails 从0 开始入门到进阶到高级 - 10分钟速通版
后端·ruby on rails·ruby
用户21411832636021 天前
别再为 Claude 付费!Codex + 免费模型 + cc-switch,多场景 AI 编程全搞定
后端
茯苓gao1 天前
Django网站开发记录(一)配置Mniconda,Python虚拟环境,配置Django
后端·python·django
Cherry Zack1 天前
Django视图进阶:快捷函数、装饰器与请求响应
后端·python·django
爱读源码的大都督1 天前
为什么有了HTTP,还需要gPRC?
java·后端·架构
码事漫谈1 天前
致软件新手的第一个项目指南:阶段、文档与破局之道
后端