生成式人工智能之路,从马尔可夫链到生成对抗网络
人工智能(Artificial intelligence,AI)技术在过去几年中取得了显著进展,其中生成式AI(Generative AI)因其强大的内容生成能力而备受关注。生成式AI可以创建新的文本、图像、音频、视频、代码以及其他形式的数据,这一特性使其在多个领域都有广泛的应用。其实,我们现在大多数在数据领域接触主要是生成式AI与判别式AI。这是AI的两个主要类别。判别式AI是传统且更为人知的部分,而生成式AI则是今天讲的主题。
生成式AI的概念源于20世纪50年代末和60年代初。当时,研究人员开始探索使用算法生成新数据的可能性。一个早期的例子是马尔可夫链(Markov Chain)。这是一个统计模型,能够根据输入生成新的数据序列。虽然这个模型看起来简单,但它为生成式AI的进一步发展奠定了基础。
上面的是一个马尔可夫链的状态转移图,用于表示马尔可夫过程中的状态之间的转移概率。在这种图中,每个圆圈代表一个状态,而箭头则表示从一个状态转移到另一个状态的概率。每条箭头上标注的数字表示从起始状态转移到目标状态的概率。在这个示例中,有两个状态:E 和 A。从状态 E 转移到状态 A 的概率是 0.7,而留在状态 E 的概率是 0.3。从状态 A 转移到状态 E 的概率是 0.4,而留在状态 A 的概率是 0.6。
由于马尔可夫链模型是一种描述系统在不同状态之间随机转移的数学模型,它在生成式AI及其他领域中有着广泛的应用。1)在文本生成方面,马尔可夫链可以通过预测下一个单词生成文本,应用于聊天机器人、自动补全系统等。2)在音乐创作中,它能够建模音乐序列,预测音符或和弦,从而辅助音乐生成。3)金融领域则利用马尔可夫链模拟股票市场趋势、信用评级变化和利率波动,而在天气预测中,它帮助根据当前和过去的条件预测未来天气。4)语音识别系统中,隐马尔可夫模型(HMMs)用于建模音素序列的概率,提升语音识别的准确性。5)在生物信息学中,马尔可夫链用于建模DNA序列,辅助基因预测和序列分析。6)Google的PageRank算法也利用了马尔可夫链来建模用户浏览行为,并对网页进行排名。7)自然语言处理领域中,马尔可夫链用于词性标注,提升文本分析和理解的效果。在游戏AI中,它能建模非玩家角色的行为,创造更加真实和多样化的动等等。
上图,安德烈·马尔可夫(1856年6月14日- 1922年7月20日)在20世纪初研究了马尔可夫过程,并在1906年发表了关于这一主题的第一篇论文。他的工作基于早期的泊松过程,对独立随机序列进行了扩展。马尔可夫在他的第一篇论文中展示了在特定条件下,马尔可夫链的平均结果会收敛到一个固定的值,从而在没有独立性假设的情况下证明了弱大数法则。马尔可夫还利用马尔可夫链研究了亚历山大·普希金的《叶甫盖尼·奥涅金》中元音的分布,并证明了这样的链的中心极限定理。
早期的生成式AI实例
接下来,我们要谈到1960年代的一个重要人物——约瑟夫·魏岑鲍姆。魏岑鲍姆最著名的贡献是他在1960年代开发的ELIZA程序(名为 ELIZA,是以乔治·伯纳德·萧伯纳的《皮格马利翁》中的天真少女命名,它可以与用户聊天。ELIZA 是用魏泽鲍姆自己创建的 SLIP 编程语言编写的。该程序将模式匹配规则应用于语句以确定其回复。(现在这样的程序被称为聊天机器人)。ELIZA是早期的自然语言处理程序之一,能够进行基于文本的对话。它通过使用一组预定义的规则和模式来识别用户输入中的关键词,并生成相应的回应。尽管ELIZA的能力非常有限,主要依赖于模式匹配,但它在当时的技术背景下展示了机器能够进行“对话”的潜力。ELIZA的成功引发了人们对计算机能够模拟人类对话的广泛兴趣,也为后来的对话系统和自然语言处理技术奠定了基础。
约瑟夫·魏岑鲍姆(Joseph Weizenbaum,1923 年 1 月 8 日 - 2008 年 3 月 5 日)是一位德裔美国计算机科学家,也是麻省理工学院的教授。魏泽鲍姆奖和魏泽鲍姆研究所都是以他的名字命名的。
80年代之后
到了1980年代和90年代,神经网络的引入标志着生成式AI的一个重大突破。神经网络能够模拟人脑的工作原理,通过大量数据训练,从而生成复杂的模式和结构。这一时期的进展为后来的生成式AI系统奠定了基础。
2014年,生成式AI迎来了一个重要的里程碑。伊恩·古德费洛(Ian Goodfellow)及其同事提出了生成对抗网络(GANs)的概念。然而,GANs通过对抗训练机制,显著提升了生成模型的能力。
在GANs中,两个神经网络——生成器(Generator)和判别器(Discriminator)——在对抗中相互博弈。生成器负责生成新内容,如图像或文本,而判别器则评估这些内容的真实性。生成器的目标是欺骗判别器,使其无法区分生成的内容与真实内容,而判别器则力求准确识别真假。通过这种对抗过程,判别器的判断标准也逐渐提高,使生成器能够生成更为高度逼真的数据。
GANs的出现标志着现代生成式AI的重要进展。
生成式AI的发展不是由某一个发明者推动的,而是许多研究人员和科学家的共同努力。最早的生成式AI实验集中在简单的统计模型和算法上,如马尔可夫链。随着计算能力的提升和神经网络技术的发展,生成式AI进入了一个新的阶段。多层神经网络(Deep Neural Networks)和卷积神经网络(Convolutional Neural Networks)的引入,使得生成式AI能够处理更加复杂和多样的数据。
除了GANs,其他先进技术如变分自编码器(VAEs)和Transformer模型也对生成式AI的发展起到了关键作用。现代生成式AI不仅能生成高质量的文本,还能生成逼真的图像和视频,创作新的音乐作品,甚至在医疗和科学研究中应用,生成合成数据用于模型训练,辅助诊断和治疗。
相关文章:

生成式人工智能之路,从马尔可夫链到生成对抗网络
人工智能(Artificial intelligence,AI)技术在过去几年中取得了显著进展,其中生成式AI(Generative AI)因其强大的内容生成能力而备受关注。生成式AI可以创建新的文本、图像、音频、视频、代码以及其他形式的…...

qt做的分页控件
介绍 qt做的分页控件 如何使用 创建 Pagination必须基于一个QWidget创建,否则会引发错误。 Pagination* pa new Pagination(QWidget*);设置总页数 Pagination需要设置一个总的页数,来初始化页码。 pa->SetTotalItem(count);设置可选的每页数量…...
MySQL with recursive 用法浅析
目录 写在前面 语句功能 with recursive 语法讲解 细节补充 “union all”语句 添加递归终止条件 写在前面 介绍“with recursive”用法的文章不少,但我都觉得讲的不够通俗,所以干脆自己写一篇。话不多说,进入正题。 语句功能 with r…...
ROS2常用命令集合
文章目录 指令帮助创建功能包功能包查找编译执行节点查看话题服务命令接口命令动作命令参数命令录制控制命令 指令帮助 ros2 --help # 帮助查看命令创建功能包 ros2 pkg create 包名 --build-type 构建类型 --dependencies 依赖列表 --node-name 可执行程序名称功能包查找 …...
VUE 子组件可以直接改变父组件的数据吗
子组件不可以直接改变父组件的数据。在Vue中,数据流是单向的,即父组件通过props向子组件传递数据,而子组件不能直接修改父组件的数据。这是为了维护数据流动的单向性和数据的可维护性。 如果子组件需要修改父组件的数据…...
Redis 持久化详解
AOF 持久化 AOF持久化数据恢复相对RDB慢,文件也更大,但数据丢失的风险更小。 AOF 写入 将数据写入Redis内存后,将写数据的命令记录到AOP磁盘文件。 【结构】server.aof_buf 主线程写操作执行完之后,命令会先追加到 Redis 的 se…...
基于riscv64架构的Dayu800开发板的napi_demo开发介绍
itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源,拥抱国产化 一、环境准备工作 1.1 Ubuntu20.04环境配置 如果已经配置OpenHarmony的编译环境则…...

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据
HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据 📚MT6816相关资料(来自商家的相关资料): 资料:https://pan.baidu.com/s/1CAbdLBRi2dmL4D7cFve1XA?pwd8888 提取码:8888📍驱动代码编写&…...
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号5
基础认证题库请移步:HarmonyOS应用开发者基础认证题库 注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,…...

Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控
本文字数:4187;估计阅读时间:11 分钟 作者:ClickHouse team 本文在公众号【ClickHouseInc】首发 Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立,利用大数据、人工智能和物联网等技术,为其汽车客户解决…...

mysql之触发器的使用
cr一:创建goods表和orders表; mysql> use mydb16_tirgeer Database changed mysql> create table goods(-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),->-> num int); Query OK, 0 rows affected (0.0…...
使用Java和Hazelcast实现分布式数据存储
使用Java和Hazelcast实现分布式数据存储 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在分布式系统中,实现高效的数据存储和管理是非常重要的。Hazelcast作为一个内存数据网格(IMDG)&…...

Hi3751V560_SELinux
Hi3751V560_SELinux setenforce Enforcing setenforce Permissive(或“setenforce 0”) getenforce V560:demo本身的: [ 13.765161] type=1400 audit(1628821512.905:4): avc: denied { read } for pid=1926 comm="system_server" name="ifindex" d…...

邮件安全篇:邮件反垃圾系统运作机制简介
1. 什么是邮件反垃圾系统? 邮件反垃圾系统是一种专门设计用于检测、过滤和阻止垃圾邮件的技术解决方案。用于保护用户的邮箱免受未经请求的商业广告、诈骗信息、恶意软件、钓鱼攻击和其他非用户意愿接收的电子邮件的侵扰。 反垃圾系统的常见部署形式 2. 邮件反垃圾…...

LoRaWAN设备的两种入网方式(ABP和OTAA)
目录 一、OTAA 1、名词解释 2、入网流程 二、ABP 三、两种入网方式的比较 一、OTAA 1、名词解释 (1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstac…...
【Rust光年纪】极致性能与灵活选择:Rust语言数学优化库详解
Rust语言中的数学优化:六大利器汇总 前言 在当今信息时代,数据处理和数学优化成为了各行各业中不可或缺的重要环节。为了满足对高效、快速计算的需求,Rust语言逐渐成为了许多开发者的首选,因其性能优越、并发安全等特点。本文将…...
机器学习 | 回归算法原理——最小二乘法
Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于…...
.NET Core 中的字符串压缩方法
字符串压缩的概念 字符串压缩通常指的是通过算法减少字符串表示所需的数据量,同时保持字符串的原始信息或能够无损地恢复原始字符串。这种压缩可以是针对文本数据的特定算法,也可以是更通用的数据压缩算法。 .NET Core 中的字符串压缩方法 使用数据压…...
SQL 基础知识
SQL(结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。以下是一些 SQL 的基础知识: 基本概念 数据库(Database): 存储和管理数据的容器。一个数据库可以包含多个表。 表(Table&…...

【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)
目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time!!! ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路: 创建一个新链表࿰…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...
Oracle实用参考(13)——Oracle for Linux物理DG环境搭建(2)
13.2. Oracle for Linux物理DG环境搭建 Oracle 数据库的DataGuard技术方案,业界也称为DG,其在数据库高可用、容灾及负载分离等方面,都有着非常广泛的应用,对此,前面相关章节已做过较为详尽的讲解,此处不再赘述。 需要说明的是, DG方案又分为物理DG和逻辑DG,两者的搭建…...

Vue.js教学第二十一章:vue实战项目二,个人博客搭建
基于 Vue 的个人博客网站搭建 摘要: 随着前端技术的不断发展,Vue 作为一种轻量级、高效的前端框架,为个人博客网站的搭建提供了极大的便利。本文详细介绍了基于 Vue 搭建个人博客网站的全过程,包括项目背景、技术选型、项目架构设计、功能模块实现、性能优化与测试等方面。…...