About neohope

一直在努力,还没想过要放弃...

导致惨重代价的运维事故2023

2023年12月:谷歌云新加坡区域故障
事件经过:因网络配置错误,导致谷歌云新加坡区域服务中断超3小时,影响大量企业客户。
事故原因:内部网络配置失误。
造成损失:客户业务中断,谷歌云赔付客户,市场竞争力受影响。

2023年11月:阿里云全线产品故障
事件经过:11月12日下午,阿里产品全线崩溃,波及全球多个地域全部云用户,持续事件达3.5小时。
事故原因:具说是鉴权服务出了问题。
造成损失:凸显云计算集中化部署风险,影响全球多地客户业务。
小插曲:两周后,在2023年11月27日,阿里云再次遭遇了近两小时的中断,影响到中国和美国的客户。然后当天晚上,滴滴就来了个大的。

2023年11月:滴滴崩溃
事件经过:11月27日晚间,滴滴崩溃,致APP地图无法加载、无法叫车,持续约12小时,影响多地用户。
事故原因:底层系统软件故障。
造成损失:订单流失,品牌形象和用户信任度下降。

2023年10月:新加坡Equinix数据中心制冷故障
事件经过:新加坡Equinix数据中心承包商误关闭冷冻水阀门,导致制冷系统误操作,造成2.5万笔银行交易失败、8.1万次登录失败。
事故原因:承包商操作失误,误关冷冻水阀门。
造成损失:金融交易及用户登录受严重影响,暴露运维管理漏洞。

2023年10月:语雀重大服务故障
事件经过:10月23日14时左右,语雀发生重大服务中断,在线文档和官网无法访问,当晚22时完全恢复,持续近8小时。
事故原因:内部运维工具缺陷,新上线升级工具bug导致华东生产环境存储服务器误下线,造成大面积服务中断。
造成损失:定性为P0级重大事故,影响数千万用户工作与知识管理,引发对运维自动化工具安全性的反思。

2023年6月:中国电信广东网络故障
事件经过:6月8日中国电信广东区域遭遇大规模网络服务中断,用户普遍无信号、无法通话上网,故障约4小时后恢复。
事故原因:网络设备故障。
造成损失:影响广东省内商务活动和民众生活,具体损失数据未公布。

2023年5月:苹果iCloud全球服务中断
事件经过:5月11日,苹果全球服务遭遇“史诗级”宕机,持续约55分钟。大量用户的Apple ID突然登出,无法访问iCloud照片、文件和备忘录等关键数据。
事故原因:数据中心严重故障。虽然苹果未详细披露,但此类核心服务中断通常源于数据中心底层存储或认证服务的配置错误或硬件集群故障。
造成损失:数千万苹果用户数据访问受阻,打破了苹果生态“稳定可靠”的神话,引发了对苹果云服务能力的广泛质疑。

2023年5月:微软Azure故障
事件经过:5月24日,微软Azure DevOps在巴西的一处scale-unit发生故障,导致宕机约10.5个小时。
事故原因:导致该中断的原因为一个简单的拼写错误,最终导致17个生产级数据库被删除。
造成损失:大量用户无法使用云服务。

2023年4月:中信证券APP交易阻塞
事件经过:4月期间,中信证券APP出现严重的交易阻塞现象,客户无法正常下单或撤单。
事故原因:系统软件缺陷与容量规划不足。在市场交易活跃期,系统未能有效处理高并发请求,暴露出软件逻辑缺陷和灾备能力的不足。
造成损失:直接影响客户交易,导致客户资金错失交易时机,引发大量客户投诉,对券商的声誉造成了直接的负面影响。

2023年3月:推特全球大规模宕机
事件经过:平台代码更新错误,导致全球用户无法登录或使用推特功能,持续超5小时。
事故原因:内部代码更新失误。
造成损失:用户体验差,广告收入受损,平台声誉下滑。

2023年3月:广州某电信机房制冷故障
事件经过:广州某电信机房水冷系统破裂引发制冷故障,微信、QQ及政务云系统瘫痪,机房被迫采用冰块临时降温。
事故原因:水冷系统破裂,制冷功能失效。
造成损失:国民级应用及政务服务中断,影响范围广、社会影响大。

2023年3月:腾讯云机房事故
事件经过:23年3月29日凌晨,腾讯云广州五区部分云服务异常,导致微信、QQ、支付等核心功能受到影响,故障在当天中午基本恢复。
事故原因:官方反馈为“本次事故由广州电信机房冷却系统故障导致”。
造成损失:核心应用不可用。

2023年3月:B站双重崩溃
事件经过:2023年B站经历了两次较为严重的全站级宕机。一次是3月5日,用户无法访问视频详情页、收藏夹;另一次是8月4日,视频封面无法加载、视频缓冲失败。
事故原因:底层服务依赖故障与机房电力问题。虽然具体细节未完全公开,但此类大型视频平台的崩溃通常源于核心微服务依赖失效或机房电力/网络架构的单点故障。
造成损失:数亿用户无法正常观看视频,严重影响用户体验和社区活跃度,尤其在流量高峰期的崩溃对品牌形象损害较大。

2023年3月:唯品会P0级宕机事故
事件经过:3月29日凌晨00:14至中午12:01,唯品会南沙IDC冷冻系统故障,机房温度骤升导致大规模宕机,线上商城停服12小时。
事故原因:制冷设备故障。
造成损失:影响800万人次客户,直接业绩损失超亿元,定性为最高级别P0级故障。
小插曲:事故后,对基础平台部负责人予以免职。

2023年2月:甲骨文多日长故障
事件经过:2月13日至15日,甲骨文云基础设施(OCI)遭遇持续长达数天的服务中断,这是OCI历史上罕见的长时间故障。同时,其子公司NetSuite也因关联故障停摆。
事故原因:DNS后端基础设施性能问题。支持OCI公共域名系统的后端API基础设施出现性能瓶颈,导致无法处理传入的服务请求;此外,NetSuite的故障还叠加了合作伙伴数据中心(Cyxtera)的物理电力故障。
造成损失:客户业务连续数天无法使用云资源,甲骨文“永不宕机”的宣传口号受挫,大量依赖其数据库服务的企业陷入停滞。

2023年1月:美国民航系统瘫痪
事件经过:1月11日美国联邦航空管理局飞行任务通知系统因关键文件损坏瘫痪,备份系统也检测到相同损坏,重启系统导致全美航班禁飞。
事故原因:系统文件损坏。
造成损失:超4000架次航班延误,698架次取消,数十万旅客受阻,经济损失巨大,暴露单点故障风险。

【转载】回望2022:AI的大年

原文地址:Looking Back at 2022: A Big Year For AI,by Sebastian Raschka, on 2023-01-02

回望2022:AI的大年

新年快乐!我很高兴看到《Ahead of AI》仅发行3期就收获了超过2万名订阅者。这是我持续写作的巨大动力,也祝愿大家2023年身体健康、顺遂圆满!

我踏入机器学习领域至今已有十年,但2022年无疑是最令人兴奋、大事频出的一年。机器学习与人工智能领域每天都有新的突破与进展,新趋势与新挑战也不断涌现。

为迎接新年,本期将盘点我2022年读过的十大论文。


Articles & Trends(文章与趋势)

2022年1月,扩散模型首次进入公众视野 https://twitter.com/rasbt/status/1487907110105006091?lang=en,我当时就预感一场大变革即将到来。但我从未料到,短短数月内,DALL·E 2、Imagen、Stable Diffusion等一众模型会接连问世。

同样,大语言模型也迎来了爆发式发展,近期ChatGPT的横空出世更是将这股热潮推向顶峰。这真是波澜壮阔的一年!

不过,我们已经在 https://magazine.sebastianraschka.com/p/ahead-of-ai-1-a-diffusion-of-innovations 中讨论过扩散模型,在 https://magazine.sebastianraschka.com/p/ahead-of-ai-2-transformers-fast-and 中探讨过各类语言模型,而且大家现在可能已经对“ChatGPT”这个词耳熟能详了,所以这部分我就长话短说。接下来,我们先来看12月的亮点研究,再解读麦肯锡发布的一份人工智能现状报告与行业调研,最后盘点今年5篇值得关注的论文。


December Highlights(12月亮点)

上文提到的那些里程碑式成果密集发布,后续很难超越。但这并不代表12月平淡无奇。简而言之,以下两篇论文吸引了我的注意。

What do vision transformers (ViTs) learn?(视觉Transformer(ViT)究竟学到了什么?)

https://arxiv.org/abs/2212.06727 研究表明,视觉Transformer学到的归纳偏置或特征,与卷积神经网络(CNNs)学到的内容相似。例如,视觉Transformer的浅层捕捉边缘与纹理,深层则学习更复杂的表征,以覆盖更宽泛的概念。

figure01

视觉Transformer从浅层(左)到深层(右)的视觉特征演进过程。来源:https://arxiv.org/abs/2212.06727

在生成建模方面,视觉Transformer生成的背景质量往往优于卷积神经网络。这引出了一个问题:在预测任务中,视觉Transformer是如何处理背景与前景的?研究发现,当移除背景时,视觉Transformer对目标类别的预测效果优于CNNs;移除前景时,其表现同样更优。这表明,视觉Transformer在依赖特征时更具选择性,会根据特征是否存在来调整权重,或者说它们整体鲁棒性更强。

论文:https://arxiv.org/abs/2212.06727

A diffusion model for generating proteins(用于生成蛋白质的扩散模型)

扩散模型在图像生成领域已取得突破性进展,那它能否用于生成蛋白质结构呢?研究人员开发了一款名为 https://www.biorxiv.org/content/10.1101/2022.12.09.519842v1 的扩散模型,用于从头合成蛋白质——这类蛋白质完全从零构建,而非衍生自自然界中已有的蛋白质。

figure02

来源:https://www.biorxiv.org/content/10.1101/2022.12.09.519842v1

需要明确区分的是:从头合成蛋白质是在实验室中利用无进化历史的氨基酸序列合成的;而AlphaFold、AlphaFold2这类系统是利用已有的氨基酸序列数据来预测蛋白质的三维结构。不过值得注意的是,该研究使用AlphaFold2来验证RDiffusion的生成结果。

论文:https://www.biorxiv.org/content/10.1101/2022.12.09.519842v1


Industry Trends(行业趋势)

作为研究人员,我们通常研究和关注的都是人工智能领域的前沿技术。但如今行业内实际应用的是什么技术呢?根据 https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai-in-2022-and-a-half-decade-in-review ,答案并非大语言模型(transformers)。*

(*注:由于样本量与代表性的局限,该报告的结论可能无法准确反映所有企业的实际情况。)

figure03

来源:https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai-in-2022-and-a-half-decade-in-review

我从上图中总结了几个有意思的发现:

  • 自然语言处理在行业中一直很受欢迎,但此前其应用规模远不及计算机视觉。而如今,计算机视觉与自然语言处理的应用规模几乎持平,这是有史以来第一次。
  • 自然语言文本理解(可能指文本分类*)的普及度几乎是自然语言“生成”的两倍。值得注意的是,自然语言生成往往占据新闻头条:GPT-3、Galactica、ChatGPT等模型皆属此类。
  • Transformer排名垫底。
  • 看来很多企业尚未采用BERT类语言模型编码器来做文本理解与分类(1),仍在使用基于词袋的分类器或循环神经网络。同样,GPT类模型解码器似乎也尚未广泛应用于语言生成,文本生成可能仍高度依赖循环神经网络等传统方法。

(*文本理解可能包含摘要。摘要本质上也属于“生成式”任务,因此我推测这里主要指类似分类的任务。另一方面,各类技术的范畴本身也存在重叠。)

Data set sizes, getting data to production, and model explainability(数据集规模、数据落地生产与模型可解释性)

我还从下图中发现了一些值得关注的洞见:

  • 利用“小数据”的能力至关重要(关键词:数据驱动型AI)。当数据不足时,生成合成数据的能力就很有价值。
  • 能否将数据快速整合到AI模型中,是区分头部企业与其他竞争者的核心。完善的软件框架与基础设施搭建对此可能至关重要。
  • 遗憾的是,大多数头部企业目前并不在意模型的可解释性。

figure04

figure05

来源:https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai-in-2022-and-a-half-decade-in-review


Papers of the Year(年度论文)

以下是我2022年读过的前三甲论文,每篇都附上简短解读。当然,今年还有许许多多令人振奋、可能足以载入史册、影响深远的论文。

今年要选出“仅”前三甲尤其困难,因此我还在后面附上了拓展榜单,收录了我心目中前十的另外七篇论文。

1) ConvNeXt

https://arxiv.org/abs/2201.03545 这篇论文对我而言是一大亮点,因为作者设计出了一种纯卷积架构,其性能超越了主流的视觉Transformer,比如 https://arxiv.org/abs/2103.14030(当然也超越了此前所有的卷积神经网络)。

figure06

来源:https://arxiv.org/abs/2201.03545

这种名为ConvNeXt的架构,很可能成为卷积神经网络的新基准,不仅适用于图像分类,还可用于目标检测与实例分割——例如,它可以作为 https://arxiv.org/abs/1703.06870 的骨干网络。

正如作者在论文中提到的,他们的灵感来自现代视觉Transformer的训练范式,以及Swin Transformer混合架构所证明的一个事实:卷积层仍有其价值。这是因为纯视觉Transformer架构缺少一些有用的归纳偏置,比如平移等变性与参数共享(也就是卷积中的“滑动窗口”特性)。

为开发ConvNeXt,作者以 https://arxiv.org/abs/1512.03385 -50 为基础架构,采纳了现代视觉Transformer训练范式中的架构改进与训练方法。需要注意的是,这些技术本身并非首创,即便在卷积神经网络领域也早有应用。但本文的创新之处在于,作者将这些技术有效结合、深入分析并落地应用。

他们具体采用了哪些技术?清单很长,包括 https://medium.com/@zurister/depth-wise-convolution-and-depth-wise-separable-convolution-37346565d4ec、倒瓶颈层设计、https://arxiv.org/abs/1711.05101、https://arxiv.org/abs/1607.06450 等等。下图中做了总结。此外,作者还使用了现代数据增强技术,比如 https://arxiv.org/abs/1710.09412、https://arxiv.org/abs/1905.04899 等等。

figure07

带标注的版本改绘自 https://arxiv.org/abs/2201.03545 中的配图

2) MaxViT

尽管卷积神经网络凭借上文的ConvNeXt强势回归,但目前视觉Transformer才是万众瞩目的焦点(双关语,无意冒犯)。

https://arxiv.org/abs/2204.01697 这篇论文展现了视觉Transformer近年来的长足进步。早期的视觉Transformer存在二次复杂度的问题,而如今人们已经探索出诸多技巧,让视觉Transformer能以线性复杂度处理更大尺寸的图像。

figure08

MaxViT于9月发布,目前在ImageNet基准测试中处于顶尖水平。来源:https://arxiv.org/abs/2204.01697

在MaxViT中,这一突破是通过将注意力模块拆解为两部分、实现局部-全局交互达成的:

  • 局部注意力(“块注意力”);
  • 全局注意力(“网格注意力”)。

值得一提的是,MaxViT是一种卷积-Transformer混合架构,同时包含卷积层。

它既可用于预测建模(包括分类、目标检测、实例分割),也可用于生成建模。

figure09

带标注的版本改绘自 https://arxiv.org/abs/2204.01697 中的配图

顺带一提,https://scholar.google.de/scholar?as_ylo=2022&q=vision%20transformer&hl=en&as_sdt=0%2C5&utm_campaign=The%20Batch&utm_source=hs_email&utm_medium=email&_hsenc=p2ANqtz-8HbXG-ZkwAj82Nv49uUrBwOHz4zUj3mkyjIfEd5lU7h3JHZR0pEG5OpkUCPPqwWvqMbjWl 显示,仅2022年就有超过5000条关于视觉Transformer的研究结果。这个数字虽然可能包含误检,但也足以体现视觉Transformer的普及程度与受关注程度。

figure10

不过不用担心,视觉Transformer不会完全取代我们钟爱的卷积神经网络。相反,正如MaxViT所展现的,当前的趋势是将视觉Transformer与卷积网络融合为混合架构。

3) Stable Diffusion

在ChatGPT成为全场焦点之前不久,https://github.com/CompVis/stable-diffusion 曾刷屏全网与社交媒体。Stable Diffusion基于论文 https://arxiv.org/abs/2112.10752,该论文于2021年12月上传。但鉴于它在 https://cvpr2022.thecvf.com/ 上正式发表,并在8月随Stable Diffusion的开源爆火,我认为将它纳入2022年的榜单合情合理。

扩散模型(https://magazine.sebastianraschka.com/p/ahead-of-ai-1-a-diffusion-of-innovations)是一类概率模型,其原理是通过逐步对一个正态分布变量去噪,来学习数据集的分布。这一过程对应于学习一个长度为T的固定马尔可夫链的逆过程。

figure11

扩散模型示意图

与GANs不同——GAN通过生成器与判别器的极小极大博弈进行训练,扩散模型是基于似然的模型,通过极大似然估计(MLE)训练。这有助于避免模式崩溃等训练不稳定问题。

扩散模型其实早已存在(可参考 https://arxiv.org/abs/1503.03585),但此前无论是训练还是推理,采样成本都极其高昂。上述2022年那篇论文的作者提到,当时采样5万张图像需要5天的运行时间。

而 https://arxiv.org/abs/2112.10752 这篇论文的创新之处在于,它不再直接使用原始图像的全分辨率像素输入空间,而是利用预训练自编码器在隐空间中应用扩散过程。

figure12

来源:https://arxiv.org/abs/2112.10752

其训练过程可分为两个阶段:首先,预训练一个自编码器,将输入图像编码到低维隐空间以降低复杂度;其次,在预训练自编码器的隐表示上训练扩散模型。

在隐空间中运行大幅降低了扩散模型训练与推理的计算成本和复杂度,同时还能生成高质量的结果。

该论文的另一大贡献是提出了用于通用条件控制的交叉注意力机制。因此,除了无条件图像生成,这种隐扩散模型还能实现图像修复、类别条件图像合成、超分辨率以及文本生成图像——最后这项正是DALL·E 2与Stable Diffusion名声大噪的原因。

Seven Other Paper Highlights of 2022(2022年另外七篇亮点论文)

以下是我最初前十榜单中另外七篇论文的简要概述:


Open Source Highlights(开源亮点)

Scikit-learn 1.2

我最喜爱的机器学习库之一scikit-learn的1.2版本于12月发布 https://scikit-learn.org/1.2/whats_new/v1.2.html#changes-1-2。我最关注的亮点是HistGradientBoostingClassifier(它是LightGBM的一种实现)。

HistGradientBoostingClassifier现在支持:

  • 交互约束(在树中,沿特定路径出现的特征被视为“存在交互”);
  • 类别权重;
  • 类别特征的特征名称。

PaLM + RLHF – Pytorch (WIP)

https://github.com/lucidrains/PaLM-rlhf-pytorch 是在上述前十榜单提到的PaLM架构基础上,实现的带人类反馈的强化学习(RLHF)方案。它可能是首个开源的ChatGPT等效实现。但最大的限制是,它(目前)不包含预训练权重。

Echo

还记得 https://magazine.sebastianraschka.com/p/ahead-of-ai-1-a-diffusion-of-innovations 中提到的OpenAI的 https://github.com/openai/whisper 模型吗?Whisper(同样入选了前十论文榜单)是一款用于生成高质量字幕的大语言模型。

这些年我试过很多字幕生成工具,Whisper生成的字幕质量真的让我惊艳。我甚至用它为 https://lightning.ai/pages/courses/deep-learning-fundamentals/ 课程生成了字幕!(补充一句:它也是少数能很好处理非母语口音的模型之一!)

上个月我们发布了 https://lightning.ai/echo/,它为Whisper提供了友好的用户界面,你可以直接从电脑拖拽视频文件使用。和运行Stable Diffusion的 https://lightning.ai/app/HvUwbEG90E-Muse 一样,Echo是又一个将大模型落地生产、借助Lightning AI框架实现多用户扩展的范例。

figure13

当然,Echo是完全开源的。查看 https://lightning.ai/pages/community/tutorial/deploy-openai-whisper/ 教程可以了解它的构建过程。


Notable Quote(金句)

任何事,只要你潜心钻研十年,都能成为专家。(这差不多是拿到两个硕士学位和一个博士学位的时间。)
——伊丽莎白·吉尔伯特


Announcement: Deep Learning Fundamentals, Unit 3(公告:深度学习基础课程 第3单元)

我一直在全力筹备 https://lightning.ai/pages/courses/deep-learning-fundamentals/

这门免费课程从零开始教你深度学习,从机器学习基础,到用PyTorch在多GPU上训练前沿深度神经网络,应有尽有。

我很高兴地宣布 https://lightning.ai/pages/courses/deep-learning-fundamentals/3-0-overview-model-training-in-pytorch/ 现已上线。在第2单元中,我们介绍了作为张量/数组库的PyTorch。在第3单元中,我们更进一步,讲解自动微分!

figure14

欢迎大家反馈!https://twitter.com/rasbt/status/1600181629145665537?s=20&t=Sgp0F-It9XuWU7PrNf4ySA 或者 https://github.com/Lightning-AI/dl-fundamentals/discussions,期待听到你的声音!


Study & Productivity Tips(学习与效率技巧)

A Yearly Review(年度复盘)

让我保持心态平和的方法之一,就是每周做复盘(以后的通讯再详聊)。恰逢年末,我想借此机会分享一下我的年度复盘流程——我通常在新年前夜做这件事。

这个练习既能回顾成就(希望能带来动力),也能规划来年目标(帮你保持专注)。

Step 1: Looking Back(第一步:回望过去)

首先,我会收集各项数据,比如复盘整体财务状况(支出、收入、储蓄)、引用量、网站访问量等等,和上一年做对比。我也会回顾这一年读过的书、上过的课。

其次,我会翻一遍日历和项目文件夹(这个话题以后的通讯再讲,我之前也在博客里写过:https://sebastianraschka.com/blog/2021/project-management.html),为每个月写下2-4件高光事件。

第三,我会浏览这一年拍的所有照片,每个月挑1-2张,做成一本小小的日记/相册并打印出来(记录关键事件、旅行等),留下一份简洁清晰的年度总结。

第四,我会花时间反思,回想这一年所有顺利的事和不尽如人意的事,然后为新的一年写下一条关键经验。

Step 2: Looking Forward(第二步:展望未来)

复盘完成后,我会花时间思考这一年最想达成的事。这是年度复盘最有挑战的部分,我建议多花点时间。

对我来说,定下2-3个年度核心目标是保持专注的绝佳方法。一年下来,我总会积攒很多细碎但有意思的项目和事务,比如维护一些小型的业余开源项目。放手很难,但有时候腾出空间才能容纳新事物,这很重要。

在这个过程中,我也会规划全年的学习计划,通常包括想读的教科书和想上的课程。我总是对自己能完成的量过于乐观,但有计划总归是好事。

这本杂志是我的个人兴趣项目,没有直接报酬。不过,如果大家愿意支持我,可以考虑购买 https://sebastianraschka.com/books。如果你觉得这些内容有洞见、有帮助,也欢迎推荐给你的朋友和同事。

figure15

https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/、https://nostarch.com/machine-learning-and-ai-beyond-basics、以及 http://mng.bz/M96o

你的支持对我意义重大!非常感谢!

【转载】大语言模型的发布与开源软件

原文地址:Launching Large Language Models and Open Source Software, on 2022-12-08

大语言模型的发布与开源软件

兼论Galactica的兴衰

让我以两则声明开启第三期《Ahead of AI》:

感谢大家迄今为止对这份通讯的积极反馈。我已经联系了部分读者,询问可以改进的方面。最主要的一点是内容很棒,但篇幅稍长。我同意这一点,也会尽量精简(如果做得到的话!)。删减内容其实很难。因此,往后我们会每月交替推出“机器学习问答”和“研究深度解读”板块。

文章与趋势

大语言模型的发布

由Papers With Code与Facebook母公司Meta联合推出的Galactica(https://arxiv.org/abs/2211.09085v1)在上个月引发了巨大轰动。

figure01
Galactica 演示页面,https://galactica.org/

Continue reading 【转载】大语言模型的发布与开源软件→

【转载】Transformer的快慢之道:语言处理领域的新进展

原文地址:Transformers, Fast and Slow: New Developments in Language Processing, on 2022-11-11

Transformer的快慢之道:语言处理领域的新进展

文章与趋势

本期我们将聚焦基于Transformer架构的大语言模型——它是现代深度学习与人工智能领域的另一大支柱,与扩散模型齐名。

想必不少读者都还有印象,自然语言处理(NLP)领域曾长期由循环神经网络(RNN)主导。而基于自注意力机制的神经网络(例如论文https://arxiv.org/abs/1706.03762 提出的初代Transformer架构)问世后,彻底革新了整个领域。

figure01

语言模型响应提示的示例。

Continue reading 【转载】Transformer的快慢之道:语言处理领域的新进展→

【转载】创新的扩散:生成式学习的最新进展

原文地址:A Diffusion of Innovations: Recent Developments in Generative Learning,by Sebastian Raschka, on 2022-11-05

创新的扩散:生成式学习的最新进展

文章与趋势

生成式学习将走向何方?我们将去往何处?

前些年,生成式领域的核心是用于文本生成的大型语言Transformer模型。尽管文本与视觉方向的Transformer模型仍是众多研究者和AI公司的关注重点,但扩散模型近来已然抢占了它们的风头。

随着扩散模型(完整论文:https://arxiv.org/abs/2006.11239 )的出现,生成式学习领域近来掀起了一场重大变革。大约一年半前,也就是2021年5月11日,我们初次见识到扩散模型的表现超越了生成对抗网络(GAN)。而如今,扩散模型已然无处不在。

什么是扩散模型?

从本质上讲,扩散模型属于生成式模型。在训练过程中,模型会分多个步骤向输入数据中逐步添加随机噪声,对数据进行扰动。随后,模型通过逆向过程学习如何反转噪声、对输出进行去噪,从而还原出原始数据。在推理阶段,扩散模型便可以基于噪声输入生成全新的数据。

figure01
扩散模型示意图

Continue reading 【转载】创新的扩散:生成式学习的最新进展→

如何通俗解释数字化转型

咱们做技术的人,都喜欢起名字:信息化、数字化、数字平台、数字化转型、数智平台等,让很多人一开始觉得好高大上,然后又开始发懵,这些词之间有什么区别呢?试着通俗解释一下:

1、信息化
把组织线下业务流程,放到线上的过程。
比如,咱们学校上线了考勤系统、选课系统,这就是一个信息化的过程

2、数字化赋能阶段一:数字报表
在信息化的过程中,产生了部分的数据,对这部分数据进行挖掘提炼,得到一些报表,对组织经营起到了一定的提升作用。
比如,大家经常能看到的各类系统报表,通过经营分析报表,指导管理经营行为。

3、数字化赋能阶段二:数字平台
信息化建设后,各个系统之间是割裂的,各系统之间数据是互不相通的。
如何将数据打通,让组织运营者,可以对企业状况一览无余。
比如各类数据平台项目、数字平台项目,一般都会为运营者提供各类“驾驶舱”或Dashboard。
其实就是为管理者开了天眼,有了全局视角。

4、数字化赋能阶段三:自动化平台
当企业数字化建设到一定程度的时候,很多管理规则可以抽象并固化为系统规则,不需要人干预即可处理事情。
比如自动化制造、自动化质控、自动化风控、甚至量化交易等等。

5、数字化赋能阶段四:智能数字化平台,或数智平台
在3的基础上,引入了一些物联网技术、智能终端技术等,一方面让运营者可以快速感知一线情况,一方面可以快速决策反馈。
比如电商平台发现交易异常的时候,会触发智能平台的规则,自动止血;或者一些智能可穿戴设备,实时监控患者病情,及时进行干预。

6、数字化转型
但组织到了一定的发展阶段,传统的运营方式,已经无法支撑组织进一步的快速发展。
需要自上而下的去调整思路,用数字化运营的方式,重塑组织的运营方式,这其中数字化技术只是一个手段。
以华为为例,他们建立了基础IT架构(华为云),打造了统一的数据底座,提供了统一的数字服务,使用了大数据、AI、IoT等技术,最终通过数字化重构了业务运营方式,包括数字化作业、数字化交易、数字化运营、数字化办公等,从而造就了了华为近10年的飞速发展。
对于咱们老年人慢病管理,我们同样需要技术架构,同样需要统一的数据底座,同样需要封装统一的数字服务,同样可以使用大数据、AI、IoT等技术,但最终要重构哪些业务的运营方式,要重构成什么样子,就是咱们课题组要考虑的了。
比如,我们通过数据分析,可以主动为各类患者提供各类服务(比如糖尿病患者),比如:量身定制适合各自的治疗及追踪方式,量身匹配到不同的家庭医生,提前把患者需要的药帮患者准备好,提前把社区医院的耗材准备好等等等等。

7、数字化赋能与数字化转型的区别
7.1、数字化赋能
业务V1.0+数字技术=》业务A V1.1
7.2、数字化转型
业务 V1.0+自上而下的数字化运营体系+技术体系支持=》业务 V2.0

Transformer03:自注意力机制

Transformer模型的核心是自注意力机制(Self-Attention),它允许模型在处理序列时,能够捕捉序列内部不同位置之间的依赖关系。自注意力机制的计算过程可以概括为以下几个步骤:

1. 查询(Query)、键(Key)、值(Value)的生成:
对于输入序列中的每个元素,模型会分别生成对应的查询(Q)、键(K)和值(V)。这通常是通过输入序列与三个不同的权重矩阵相乘来实现的。

2. 注意力分数的计算:
对于序列中的每个元素,计算其查询(Q)与序列中所有元素的键(K)的点积,然后除以一个缩放因子(通常是键向量维度的平方根),得到一个注意力分数。

Attention Score

其中,(Q)和(K)分别是查询和键的向量,\(d_k\) 是键向量的维度。

3. Softmax归一化:
使用Softmax函数对注意力分数进行归一化处理,使得所有元素的注意力分数之和为1。这表示每个元素对其他元素的注意力贡献是相对的。

Attention Weights

4. 加权求和:
将归一化后的注意力权重与对应的值(V)相乘,然后将所有元素的加权值相加,得到最终的输出。

Output

5. 多头注意力:
Transformer模型中的自注意力通常不是只计算一次,而是通过多头注意力(Multi-Head Attention)来实现。这意味着模型会并行地执行多次自注意力机制,每个头都有自己的查询、键和值权重矩阵。最后,这些头的输出会被拼接起来,并通过一个线性层来整合信息。

6. 残差连接和层归一化:
在自注意力层之后,通常会有一个残差连接,它将自注意力层的输入直接添加到输出上,然后通过一个层归一化(Layer Normalization)来稳定训练过程。

整个自注意力机制使得Transformer能够并行处理序列中的所有元素,并且能够捕捉到元素之间的长距离依赖关系,这是它在处理序列数据时非常有效的原因之一。

让我们通过一个简单的例子来说明自注意力机制的计算过程。假设我们有一个由3个词组成的序列:[“I”, “love”, “coding”],并且每个词的词嵌入维度是4。

步骤1: 词嵌入
首先,我们将每个词转换为词嵌入向量。假设词嵌入矩阵已经预先训练好,我们可以直接获取每个词的词嵌入向量:

– “I” -> [0.1, 0.2, 0.3, 0.4]
– “love” -> [0.5, 0.6, 0.7, 0.8]
– “coding” -> [0.9, 1.0, 1.1, 1.2]

步骤2: 添加位置编码
接下来,我们为每个词嵌入向量添加位置编码。假设我们使用标准的正弦和余弦函数生成位置编码,并且序列的最大长度是3。位置编码向量如下:

– 位置1的编码:[sin(0), cos(0), sin(8), cos(8)] (这里8是4*2,因为每个词嵌入维度是4)
– 位置2的编码:[sin(1), cos(1), sin(9), cos(9)]
– 位置3的编码:[sin(2), cos(2), sin(10), cos(10)]

将位置编码向量与词嵌入向量相加:

– “I” (位置1): [0.1+sin(0), 0.2+cos(0), 0.3+sin(8), 0.4+cos(8)]
– “love” (位置2): [0.5+sin(1), 0.6+cos(1), 0.7+sin(9), 0.8+cos(9)]
– “coding” (位置3): [0.9+sin(2), 1.0+cos(2), 1.1+sin(10), 1.2+cos(10)]

步骤3: 自注意力计算
现在我们开始自注意力的计算过程。首先,我们需要为每个词生成查询(Q)、键(K)和值(V)向量。假设我们使用相同的词嵌入向量作为Q、K和V的初始输入,并通过不同的权重矩阵进行转换:

– Q = W^Q * 输入向量
– K = W^K * 输入向量
– V = W^V * 输入向量

这里W^Q、W^K和W^V是模型的可学习参数。

步骤4: 计算注意力分数
对于序列中的每个词,我们计算其查询向量与序列中所有词的键向量的点积,然后除以键向量维度的平方根进行缩放:

– 对于词”I”,其注意力分数是它自己的Q与所有词的K的点积:

Attention Score

步骤5: Softmax归一化
使用Softmax函数对每个词的注意力分数进行归一化处理:

– 对于词”I”,归一化后的注意力权重是:

Attention Weights

步骤6: 加权求和
最后,将归一化后的注意力权重与对应的值向量相乘,并求和得到最终的输出:

– 对于词”I”,其输出是:

Output

这个过程对于序列中的每个词都要重复执行,以计算整个序列的输出。自注意力机制允许模型在处理每个词时,都能够考虑到序列中其他所有词的信息,从而捕捉词与词之间的复杂关系。

请注意,这个例子是一个简化的版本,实际的Transformer模型可能会使用多头自注意力机制,并且会有多个层来进一步处理信息。此外,词嵌入和位置编码通常是通过预训练得到的,而不是从头开始训练。

Transformer02:词嵌入及位置编码的计算

一句话经过分词和嵌入之后,输入到Transformer模型的过程如下:

1. 构建输入序列:
将分词后得到的词或字符序列转换为对应的词嵌入向量。每个词或字符都有一个对应的嵌入向量,这些向量通常通过预训练的词嵌入模型获得。

2. 添加位置编码:
由于Transformer模型本身不包含递归或卷积结构,因此它无法直接捕捉序列中的位置信息。为了解决这个问题,需要为每个词嵌入向量添加一个位置编码。位置编码通常是根据词在序列中的位置生成的,它与词嵌入向量相加,使得模型能够利用位置信息。

3. 输入到Transformer:
将包含位置编码的词嵌入向量作为输入序列送入Transformer模型。在Transformer模型中,输入序列被处理为一系列向量,每个向量对应序列中的一个元素(词或字符)。

4. 多头自注意力:
Transformer模型使用多头自注意力机制来处理输入序列。在自注意力层中,每个元素的嵌入向量都会与序列中所有其他元素的嵌入向量进行比较,以计算注意力权重。这个过程在多个“头”中并行进行,每个头都有自己的查询(Q)、键(K)和值(V)权重矩阵。

5. 层归一化和前馈网络:
自注意力层的输出会经过层归一化,然后送入前馈神经网络。前馈网络通常由两个线性变换和一个非线性激活函数组成。这个过程在每个Transformer层中重复进行。

6. 堆叠多个Transformer层:
Transformer模型通常由多个相同的层堆叠而成,每个层都包含自注意力机制和前馈网络。通过这种方式,模型可以在不同层捕捉不同级别的特征和依赖关系。

7. 输出处理:
经过多个Transformer层处理后,模型的输出可以用于各种NLP任务,如语言翻译、文本摘要、问答等。对于特定的任务,可能还需要在Transformer模型的顶部添加额外的层,如线性层或分类层。

总之,每个嵌入向量并不是有自己的Transformer,而是所有嵌入向量一起作为输入序列,被送入同一个Transformer模型中进行处理。通过多头自注意力机制,模型能够捕捉序列内部不同位置之间的依赖关系,从而实现对输入句子的深入理解。

通过一个简单的例子来说明词嵌入和位置编码的计算过程。

### 词嵌入(Word Embedding)

假设我们有一个句子:”I love natural language processing”。首先,我们需要将这个句子分词成单词列表:[“I”, “love”, “natural”, “language”, “processing”]。

接下来,每个单词将通过一个词嵌入矩阵转换成一个固定维度的向量。假设我们的词嵌入维度是4,那么每个单词将被映射到一个4维空间中。例如:

– “I” -> [0.1, 0.2, 0.3, 0.4]
– “love” -> [0.5, 0.6, 0.7, 0.8]
– “natural” -> [0.9, 1.0, 1.1, 1.2]
– “language” -> [1.3, 1.4, 1.5, 1.6]
– “processing” -> [1.7, 1.8, 1.9, 2.0]

这里的数字是随机生成的,实际的词嵌入向量是通过训练得到的,能够捕捉单词的语义信息。

### 位置编码(Positional Encoding)

Transformer模型不包含递归或卷积结构,因此无法直接捕捉序列中单词的顺序信息。为了解决这个问题,我们需要为每个词嵌入向量添加位置编码。

位置编码通常是通过正弦和余弦函数的组合来生成的,以确保不同维度的位置编码具有不同的频率。假设我们的词嵌入维度是4,我们可以为每个位置生成一个4维的位置编码向量:

– 位置1的编码:[sin(1/10000), cos(1/10000), sin(2/10000), cos(2/10000)]
– 位置2的编码:[sin(2/10000), cos(2/10000), sin(4/10000), cos(4/10000)]
– 以此类推…

将位置编码向量与相应的词嵌入向量相加,得到最终的输入向量:

– “I” (位置1): [0.1+sin(1/10000), 0.2+cos(1/10000), 0.3+sin(2/10000), 0.4+cos(2/10000)]
– “love” (位置2): [0.5+sin(2/10000), 0.6+cos(2/10000), 0.7+sin(4/10000), 0.8+cos(4/10000)]
– 以此类推…

这样,每个单词的嵌入向量都包含了其在句子中的位置信息,使得Transformer模型能够在处理序列时考虑到单词的顺序。

### 注意事项

– 词嵌入和位置编码的具体计算方法可能因不同的模型和实现而有所不同。
– 实际应用中,词嵌入通常是通过预训练模型(如Word2Vec、GloVe或BERT)得到的,而不是从头开始训练。
– 位置编码的生成方法在不同的Transformer变体中可能有所不同,例如Transformer-XL和XLNet采用了不同的方法来处理长序列。

这个例子展示了词嵌入和位置编码的基本计算过程,以及它们如何帮助Transformer模型理解和处理自然语言序列。

在实际应用中,词嵌入和位置编码可以预先计算并缓存,以提高效率。下面是一些具体的情况:

1. 词嵌入的缓存:
– 词嵌入通常是通过预训练语言模型得到的,这些模型在大规模语料库上训练,学习到的词嵌入向量能够捕捉丰富的语义信息。
– 一旦词嵌入矩阵训练完成,对于任何给定的单词,其对应的词嵌入向量就可以直接从预训练的模型中获取,而不需要每次重新计算。

2. 位置编码的缓存:
– 位置编码的生成方式是固定的,例如使用正弦和余弦函数的组合,这意味着对于给定的维度和最大序列长度,位置编码向量可以预先计算出来。
– 在模型初始化阶段,可以生成一个位置编码矩阵,其中每一行对应一个位置的位置编码。在处理输入序列时,只需根据序列中单词的位置索引来选择相应的位置编码向量。

3. 缓存的优势:
– 缓存词嵌入和位置编码可以显著减少模型在每次前向传播时的计算量,特别是对于大型模型和长序列。
– 缓存还可以减少模型的延迟,因为从内存中读取预先计算好的向量比实时计算要快得多。

4. 实际应用:
– 在实际的深度学习框架中,如TensorFlow或PyTorch,词嵌入和位置编码通常作为模型的参数或静态变量存储,以便在模型训练和推理过程中重复使用。

5. 灵活性:
– 虽然位置编码通常是固定的,但在某些情况下,如果模型需要处理可变长度的序列,位置编码也可以动态生成。但即使如此,对于常见的序列长度,位置编码的计算可以预先完成,并存储在查找表中以供快速访问。

通过这种方式,词嵌入和位置编码的预先计算和缓存,可以使得Transformer模型更加高效地处理输入数据,特别是在处理大量数据或需要快速响应的应用场景中。

Transformer01:总论

在处理自然语言处理(NLP)任务时,输入一句话通常需要经过以下步骤:

1. 分词(Tokenization):
首先,输入的句子需要被分词,即将句子拆分成更小的单元,这些单元可以是单词、字符或者其他语言单位。分词是处理自然语言的第一步,因为大多数模型都是基于离散的词或字符进行操作的。

2. 词嵌入(Embedding):
分词之后,每个词或字符会被转换成词嵌入(Word Embedding)。词嵌入是将离散的词或字符映射到连续的向量空间中的一种表示方法。这些向量能够捕捉词的语义信息,并且通常通过预训练模型(如Word2Vec、GloVe或BERT等)来获得。

3. 位置编码(Positional Encoding):
对于Transformer模型,由于其自注意力机制无法捕捉序列中元素的顺序信息,因此需要添加位置编码。位置编码是一种向量,它与词嵌入相加,以提供序列中每个元素的位置信息。

4. 序列化(序列化处理):
在某些情况下,如果输入序列超过了模型的最大长度限制,可能还需要进行序列化处理,如截断或填充。

5. 模型处理:
经过上述步骤处理后,得到的序列化、嵌入化和编码后的输入数据就可以被送入模型进行进一步的处理和学习了。

因此,当输入一句话时,通常是先进行分词,然后计算词嵌入,最后将分词后的词嵌入与位置编码相结合,形成模型的输入。这个过程使得模型能够理解句子的结构和语义信息,并在此基础上进行各种NLP任务。