aigc分享

news2024/9/22 17:18:14

AIGC技术分享

AIGC概述

  • AIGC的概念、应用场景和发展历程

机器学习基础

  • 机器学习的基本概念、分类和常用算法,如线性回归、决策树、支持向量机、神经网络等。

深度学习基础

  • 深度学习的基本概念、分类和常用算法,如卷积神经网络、循环神经网络、自编码器等。

Golang在AIGC中的应用

  • Golang在AIGC中的应用场景和优势,如高并发、内存管理、跨平台等。

Golang常用的AIGC库

  • Golang常用的AIGC库,如GoLearn、Gorgonia、Gonum等。

Golang与Python在AIGC中的比较

  • 对比Golang和Python在AIGC中的优缺点,如性能、易用性、生态系统等。

AIGC应用案例

  • AIGC在各个领域的应用案例,如智能客服、智能家居、智能医疗、智能金融等。

AIGC发展趋势

  • AIGC未来的发展趋势和前景,如自动化、智能化、数字化等。
wget --no-check-certificate http://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1

1943年,麦卡洛克和皮特斯提出了最早的人工神经网络模型:麦卡洛克-皮特斯神经元(McCulloch-Pitts Neuron)模型[1]。该模型旨在用二进制开关的“开”与“关”的机制来模拟神经元的工作原理。该模型的主要组成部分为:接收信号的输入节点,通过预设阈值处理输入信号的中间节点,以及生成输出信号的输出节点。在论文中,麦卡洛克与皮特斯证明了该简化模型可以用于实现基础逻辑(如“与”、“或”、“非”)运算。除此以外,该模型还可以用于解决简单问题,如模式识别与图像处理。

图片

1949年,加拿大心理学家唐纳德·赫布(Donald Hebb)出版了一本题为《行为的组织(The Organization of Behavior)》,并在书中提出了著名的赫布式学习(Hebbian Learning)理论[2]。该理论认为“共同激活的神经元往往是相互连接的(Cells that fire together, wire together)”,也就是神经元具有突触可塑性(synaptic plasticity, 突触是神经元之间相互连接进行信息传递的关键部位),并认为突触可塑性是大脑学习与记忆功能的基础。

机器学习理论中的关键步骤是如何使用不同的更新算法(update rule)来更新模型。使用神经网络模型进行机器学习时,需设定初始模型的架构与参数。在模型训练过程中,每一个来自训练数据集中的输入数据都会导致模型更新各项参数。这个过程,就需要使用到更新算法。赫布式学习理论为机器学习提供了最初更新算法:Δw = η x xpre x xpost。Δw为突触模型的参数的变化大小, η为学习速率,xpre 为突触前神经元活动值大小,xpost为突触后神经元活动值大小。

赫布更新算法为利用人工神经网络来模仿大脑神经网络的行为提供了理论基础。赫布式学习模型是一种无监督学习模型——该模型通过调节其感知到的输入数据之间联系程度的强弱来实现学习目的。也正因为如此,赫布式学习模型在对输入数据中的子类别聚类分析尤其擅长。随着神经网络的研究逐渐加深,赫布式学习模型后来也被发现适用于强化学习等其他多个细分领域。

感知机

(Perceptron)

1957年,美国心理学家弗兰克·罗森布拉特(Frank Rosenblatt)首次提出感知机(Perceptron)模型,并且首次使用了感知机更新算法[3]。感知机更新算法延伸了赫布更新算法的基础,通过利用迭代、试错过程来进行模型训练。在模型训练时,感知机模型对于每一个新的数据,计算出模型预测的该数据输出值与实际测得的该数据输出值的差值,然后使用该差值更新模型中的系数。具体方程如下:Δw = η x (t - y) x x。在提出最初的感知机模型后,罗森布拉特继续深入探讨、发展感知机相关理论。1959年,罗森布拉特成功研发出一台使用感知机模型识别英文字母的神经计算机Mark1。

感知机模型与麦卡洛克-皮特斯神经元类似,也是基于神经元的生物学模型,以接收输入信号,处理输入信号,生成输出信号为基本运作机理。感知机模型与麦卡洛克-皮特斯神经元模型的区别在于后者的输出信号只能为0或1——超过预设阈值为1,否则为零——而感知机模型则使用了线性激活函数,使得模型的输出值可以与输入信号一样为连续变化值。另外,感知机对每一条输入信号都设置了系数,该系数能影响每条输入信号对于输出信号的作用程度。最后,感知机是学习算法,因为其各输入信号的系数可以根据所看到的数据进行调整;而麦卡洛克-皮特斯神经元模型因没有设置系数,所以其行为无法根据数据反馈进行动态更新。

1962年,罗森布拉特将多年关于感知机模型的研究集结成《神经动力学原理:感知机与大脑原理(Principles of Neurodynamics: Perceptrons and the theory of brain mechanisms)》一书。感知机模型在人工智能领域是一项重大的进步,因为它是第一种具有学习能力的算法模型,能自主学习接收到的数据中的规律与特点。并且,它具有模式分类的能力,可以将数据根据其特点自动分为不同的类别。另外,感知机模型相对简单,所需计算资源也较少。

尽管感知机具有种种优点与潜力,但它毕竟是一个相对简化的模型,存在许多局限性。1969年,计算机科学家马文·明斯基(Marvin Minsky)与西摩尔·派普特(Seymour Papert)合作出版了《感知机(Perceptron)》一书[5]。在书中,两位作者对感知机模型进行了深入的批判,分析了以感知机为代表的单层神经网络的局限,包括但不限于“异或”逻辑的实现以及线性不可分问题。但是,二位作者与罗森布拉特都已经意识到,多层神经网络可以解决这些单层神经网络不能解决的问题。可惜的是,《感知机》一书对感知机模型的负面评价影响巨大,使得公众与政府机构对于感知机研究一下子失去了兴趣。1971年,感知机理论的提出者兼头号支持者罗森布拉特不幸在一次出海航行中遇难,享年43岁。在《感知机》一书与罗森布拉特之死的双重打击下,与感知机相关的论文发表数目逐年迅速减少。人工神经网络的发展进入了“寒冬”。

图片

反向传播算法

多层神经网络能够解决单层神经网络无法解决的问题,但它带来了新的问题:更新多层神经网络模型的每一层神经元的权重涉及到大量精确计算,而普通的计算方法费时费力,使得神经网络学习过程变得非常缓慢,实用性很差。

为了解决这个问题,美国社会学家、机器学习工程师保罗·韦伯(Paul Werbos)在1974年的哈佛大学的博士论文《Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences》中提出了反向传播算法(backpropagation)[6]。该算法的基本思想是通过将预测到的输出值与实际输出值之间的误差从输出层反向传播,从而调整神经网络各个神经元的权重。这个算法的本质是根据微积分中常用的链式法则从输出层到输入层反向(沿着负梯度方向)实现对由多层感知机组成的神经网络的训练。

令人感到遗憾的是,韦伯的论文在发表后很长一段时间内都没有得到足够的关注。直到1985年,加州大学圣地亚哥分校的心理学家大卫·鲁梅尔哈特(David Rumelhart)、认知心理学家与计算机学家杰弗里·辛顿(Geoffrey Hinton),以及计算机学家罗纳德·威廉姆斯(Ronald Williams)合作发表了一篇关于反向传播算法在神经网络中的应用的论文[7]。这篇论文在人工智能领域获得了很大的反响。鲁梅尔哈特等人的想法与韦伯的想法本质上是相似的,但鲁梅尔哈特他们没有引用韦伯的论文,这一点近来常常为人诟病。

反向传播算法在人工神经网络的发展中起着关键作用,并使得深度学习模型的训练成为可能。自从反向传播算法于八十年代重新受到人们的重视以来,它被广泛应用于训练多种神经网络网络。除了最初的多层感知机神经网络以外,反向传播算法还适用于卷积神经网络、循环神经网络等。由于反向传播算法的重要地位,韦伯与鲁梅尔哈特等人被认为是神经网络领域的先驱之一。

事实上,反向传播算法是人工智能领域的“文艺复兴”时代(20世纪80年代和90年代期间)的重要成果。并行分布式处理(Parallel Distributed Processing)是这段时间的主要方法论。该方法论关注多层神经网络,并推崇通过并行处理计算来加速神经网络的训练过程与应用。这与先前的人工智能领域的主流思想背道而驰,因而具有划时代的意义。另外,该方法论受到了计算机科学以外,包括心理学、认知科学,以及神经科学等不同领域的学者的欢迎。因此,这段历史常常被后人认为是人工智能领域的文艺复兴。

图片

卷积神经网络

(Convolutional Neural Network, CNN)

如果把麦卡洛克·皮特斯神经元作为人工智能诞生的标志,那么美国可以说是人工神经网络的发源地。人工神经网络诞生后的三十年里,美国在人工智能领域一直扮演着主角,孕育了感知机、反向传播算法等关键技术。但在第一个人工智能的"寒冬"中,包括政府、学术界在内的美国各方人士对人工神经网络的潜能失去了信心,大大放缓了对神经网络技术迭代的支持与投入。也因为如此,在这个席卷美国的”寒冬“中,其他国家的人工神经网络的研究走到了历史发展的聚光灯之下。卷积神经网络与递归神经网络就是在这样的背景下出场的。

卷积神经网络是一种包含了卷积层,池化层,以及全连接层等多种独特结构的多层神经网络模型。该模型利用卷积层提取出输入信号的局部特征,然后通过池化层降低数据的维度与复杂性,最后通过全连接层将数据转化为一维的特征向量并生成输出信号(一般为预测或分类结果)。卷积神经网络的独特结构使得它在处理具有网格结构属性的数据(图像,时间序列等)时尤有优势。

图片

最早的卷积神经网络是日本计算机科学家福岛邦彦(Kunihiko Fukushima)于1980年提出[8]。福岛所提出的模型包含卷积层与下采样层,是当今主流卷积神经网络结构仍然一直沿用的结构。福岛的模型与今日的卷积神经网络唯一不同之处在于前者没有使用反向传播算法——如前文所叙,反向传播算法要等到1986年才受到关注。由于福岛的卷积神经网络模型没有该算法的助力,该模型与当时的其他多层神经网络一样存在训练时间长、计算复杂的问题。

1989年,任职于美国贝尔实验室法国计算机科学家杨·立昆(Yann LeCun)及其团队提出了名为LeNet-5的卷积神经网络模型,并在该模型中使用了反向传播算法进行训练[9]。立昆证明了该神经网络可以用于识别手写数字与字符。这标志着卷积神经网络在图像识别中的广泛应用的开始。

递归神经网络

(Recursive Neural Network, RNN)

与卷积神经网络一样,递归神经网络也是一类具有独特结构特征的神经网络。该类神经网络的主要结构特征在于各层级间具有递归关系,而不是顺序关系。由于以上这些特殊结构特征,递归神经网络特别适于处理自然语言以及其他文本类的数据。

1990年,美国认知科学家、心理语言学家杰弗里·艾尔曼(Jeffrey Elman)提出了艾尔曼网络模型(又称为简化递归网络)[10]。艾尔曼网络模型是首个递归神经网络。艾尔曼利用该模型证明了递归神经网络能够在训练时维持数据本身的先后顺序性质,为日后该类模型在自然语言处理领域的应用奠定了基础。

递归神经网络存在梯度消失现象。在使用反向传播算法训练神经网络时,离输入近的层级的权重更新梯度逐渐变得近似于零,使得这些权重变化很慢,导致训练效果变差。为了解决这个问题,1997年,德国计算机科学家瑟普·霍克赖特(Sepp Hochreiter)及其博士导师于尔根·施密德胡伯(Jürgen Schmidhuber)提出了长短期记忆网络[11]。该模型为一种特殊的递归神经网络模型。它引入了记忆节点,使得模型具有更好的长期记忆存留的能力,从而化解了梯度消失现象。该模型目前仍是使用最普遍的递归神经网络模型之一。

生成式神经网络与大型语言模型

**
**

递归神经网络可以逐字连续生成文本序列,因此常常被认为是早期的生成式神经网络模型。然而,尽管递归神经网络善于处理、生成自然语言数据,但它对于长序列数据一直无法有效捕捉全局信息(对于距离较远的信息无法进行有效联系)。

图片

2017年,美国谷歌公司的研究员阿希瑟·瓦斯瓦尼(Ashish Vaswani)等人提出了变压器模型(Transformer)[14]。该大型神经网络分为编码器与解码器两个主要部分。编码器对输入序列进行编码处理,通过自注意力层等来进一步处理编码后的信息。此后,信息传至解码器,并经过解码器部分的自注意力层等网络结构来生成输出序列。该模型的重要创新在于自注意力层(self-attention)。自注意力层使得神经网络模型能摆脱顺序处理文本的局限性,而是直接去文本中的不同位置抓取信息并捕捉各处信息之间的依赖关系,并且并行化计算不同位置之间在语义上的相关性。变压器模型的横空出世对自然语言处理领域乃至整个人工智能领域产生了巨大影响。在短短的几年里,变压器模型已经被广泛用在各类人工智能大模型中。

在层出不穷基于变压器结构的大型语言模型中,OpenAI公司推出的聊天机器人ChatGPT最为出名。ChatGPT所基于的语言模型为GPT-3.5(生成式预训练变压器模型-3.5)。OpenAI公司在训练该模型时用了大量的语料库数据,使其最终具备了广泛的语言理解能力与生成能力,包括提供信息、交流,文本创作、完成软件代码写作、以及轻松胜任各类涉及语言理解相关的考试。

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

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

相关文章

面试专题:java多线程(2)-- 线程池

1.为什么要用线程池? 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处: 降低资源消…

【嵌入式烧录/刷写文件】-1.6-剪切/保留Motorola S-record(S19/SREC/mot/SX)文件中指定地址范围内的数据

案例背景: 有如下一段S19文件,保留地址范围0x9140-0x91BF内的数据,删除地址范围0x9140-0x91BF外的数据。 S0110000486578766965772056312E30352EA6 S123910058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775B S12391207…

如何判断一个点是否在凸多边形内 - golang

判断一个点是否在凸多边形内的方法很多,此处仅给出使用向量叉积法判断点是否在凸多边形内的方法。 以下图为例说明问题: 原理: 1. 将多边形的第 i 条边的第一个顶点指向点 P 得到向量 v1,然后将从第一个顶点指向第二个顶点得到向…

Java 多线程实现1到1千万的求和操作

一、使用多线程的背景 提高程序速度和响应性:许多应用程序需要同时执行多个任务,例如网络服务器,图形图像处理,模拟程序等。使用多线程可以让程序同时执行多个部分,从而显著提高程序的执行速度、响应速度。 充分利用 …

CompletableFuture 线程编排

一、前言 Java8 新特性之一&#xff0c;其实现了Future<T>, CompletionStage<T>两接口&#xff0c;后者是对前者的一个扩展&#xff0c;增加了异步回调、流式处理、多个Future组合处理的能力&#xff0c;使 Java 在处理多任务的协同工作时更加顺畅便利。 二、Compl…

POST请求与GET请求的区别

POST请求 &#xff08;提交数据&#xff0c;一般用于将数据发给服务器&#xff0c;用于修改和写入数据&#xff09; 1、传参方式&#xff1a;相对安全&#xff0c;入参在request body中&#xff0c;可通过各种抓包工具获取 2、缓存&#xff1a;不会被缓存&#xff0c;保存在服…

基于Qt的嵌入式GUI开发指南(一)

Qt 是一个跨平台的应用程序开发框架&#xff0c;用于创建高性能、可扩展和用户友好的图形用户界面&#xff08;GUI&#xff09;应用程序。它提供了丰富的工具、库和功能&#xff0c;使开发者能够轻松地构建各种类型的应用程序&#xff0c;包括桌面应用程序、移动应用程序和嵌入…

Bellhop 从入门到上手

文章目录 前言一、Bellhop 简介二、Bellhop 结构1、输入文件2、输出文件 三、Bellhop 环境文件1、OPTIONS12、OPTIONS23、OPTIONS34、OPTIONS45、其他参数 四、BELLHOP&#xff08;Matlab_GUI&#xff09;实例1、bellhop 工具箱自取2、解压缩工具箱3、设置路径4、添加并包含子文…

高频面试八股文原理篇(六) mysql数据库的左连接,右连接,内链接有何区别

目录 内连接与外连接的区别 在sql中l外连接包括左连接&#xff08;left join &#xff09;和右连接&#xff08;right join&#xff09;&#xff0c;全外连接&#xff08;full join&#xff09;&#xff0c;内连接(inner join) 内连接与外连接的区别 自连接 一个表与它自身进…

Redis(一)常见命令使用

常见文件名Redis-cli使用命令1、启动Redis2、连接Redis3、停止Redis4、发送命令1、redis-cli带参数运行&#xff0c;如&#xff1a;2、redis-cli不带参数运行&#xff0c;如&#xff1a; 5、测试连通性 key操作命令获取所有键查询键是否存在删除键查询键类型移动键查询key的生命…

第二十章行为性模式—迭代器模式

文章目录 迭代器模式解决的问题结构实例存在的问题适用场景 JDK 源码 - Iterator 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模式分为…

“30分钟”带你走进线性回归的世界,轻松学习互联网营销推荐算法!

前言 本章主要介绍用于推荐系统的算法-线性回归算法的推导介绍&#xff0c;文章思路如下&#xff1a;由机器学习介绍&#xff0c;到监督学习&#xff0c;并重点介绍监督学习中回归问题里面的线性回归问题及推导。 可能需要大家具备一定的统计学、高数相关知识。 一、由机器学…

k8s入门(一)之pod创建、label使用、污点、亲和性、RS

一、创建一个pod [rootmaster01 ~]# kubectl create ns prod [rootmaster01 ~]# cat pod.yaml apiVersion: v1 kind: Pod metadata:name: pod-demonamespace: prodlabels:app: myapp spec:containers:- name: test1image: busybox:latestcommand:- "/bin/sh"- "…

问题记录 bug1-系统上电挂载异常分区,df与du命令查看文件使用大小显示不一样

linux磁盘分区 在Linux中&#xff0c;一切皆目录&#xff0c;每一块硬盘分区对应Linux的一个目录&#xff0c;所以我们可以通过管理目录来管理硬盘分区&#xff0c;而将硬盘分区与文件目录关联的操作就称为“挂载”【mount】&#xff0c;反之为“卸载”【unmount】 emmc&…

C高级 text

1.从命令行传参传入两个整数&#xff0c;整数1代表从整数几开始求和&#xff0c;整数2代表求和到整数几为止 2.打印99乘法表 3.输入年月日&#xff0c;计算是该年的第几天 1. 2. 3.

Linux进程基础

进程指正在运行的程序&#xff0c;如下图示&#xff0c;是资源分配的最小单位&#xff0c;可以通过“ps ”或“top”等命令查看正 在运行的进程&#xff0c;线程是系统的最小调度单位&#xff0c;一个进程可以拥有多个线程&#xff0c;同一进程里的线程可以共享此 进程的同一资…

Server版支持即将到期,Jira和Confluence如何迁移?(2)

到2024年2月&#xff0c;Atlassian将终止对Server产品及插件的所有支持。是时候制定您的迁移计划了——Atlassian为您提供两种迁移选择&#xff0c;一是本地部署的数据中心版本&#xff0c;中国用户25人以上即可使用&#xff0c;二是云版。作为Atlassian全球白金合作伙伴&#…

Markdown可以在线编辑吗?这个办法很好用

Markdown是一种轻量级标记语言&#xff0c;它使用简单的语法来创建文本&#xff0c;非常易于学习。它最初被设计为一种用于写作的格式&#xff0c;但现在已经成为了一种非常受欢迎的文本编辑工具。 作为一个较为方便的在线文本编辑器&#xff0c;它可以用代码代替文字&#xf…

一篇完整的测试方案怎么写

看上面的目录&#xff0c;详细 文档说明 文档名称 创建人/修改人 版本 时间 备注 v1.0 2022-11-17 新建 v1.1 2022-11-25 v1.2 2022-12-05 v2.0 2022-12-13 v2.1 2022-12-14 一、文档目的 为软件开发项目管理者、软件工程师、系统维护工程师、测试…