【AI新领域应用】AlphaFold 2,原子级别精度的蛋白质3D结构预测,李沐论文精读(2021Nature封面,2024诺贝尔奖)

文章目录

    • AlphaFold 2 —— 原子级别精度的蛋白质3D结构预测
    • 背景(2024诺奖与AI学习资料)
    • 1、摘要、导论、写作技巧
    • 2、方案:模型,编码器,解码器
    • 3、实验:数据集,训练,结果

AlphaFold 2 —— 原子级别精度的蛋白质3D结构预测

【AI新领域应用】AlphaFold 2,原子级别精度的蛋白质3D结构预测,李沐论文精读(2021年nature正刊,2024诺贝尔奖)

最近一直忙,好久没更新了,11月还是得水一篇,其实前段时间看到新闻就想加这个了,一直没空看,终于打卡了。

中文标题:使用 AlphaFold 进行高精度蛋白质结构预测
英文标题:Highly accurate protein structure prediction with AlphaFold
发布平台:Nature
发布日期:2021-08-26
引用量(非实时):15560

核心观点

  • AlphaFold 通过结合新颖的Transformer 神经网络架构和基于蛋白质结构的进化、物理和几何约束的训练程序,极大地提高了结构预测的准确性。
  • Evoformer 模块通过注意力机制和三角更新机制,完成序列比对(MSA)和结构模板中的信息的交换使得最终的序列抽象表示从而能够直接推理空间和进化关系
  • 结构模块则在蛋白质主链的基础上构建骨干框架,之后通过不变点注意力(IPA)整合所有信息,直接实现原子的3D坐标预测输出,并添加了很多辅助预测头实现更丰富的输出
  • 最后AlphaFold 通过自蒸馏技术进行数据增强,使用回收迭代机制实现自我强化;AlphaFold的预测结果经过严格的实验分析,在保持优越的预测性能的同时模型的稳健性也令人信服

背景(2024诺奖与AI学习资料)

2024年的诺贝尔奖与AI

  • AlphaFold开发者获2024诺贝尔化学奖,AI抢夺科学家的最重要荣誉
    刚刚,诺贝尔化学奖,揭晓!AI是没有边界的!
    2024年诺贝尔化学奖公布,一半授予大卫·贝克(David Baker),“以表彰在计算蛋白质设计方面的贡献”;另一半则共同授予德米斯·哈萨比斯(Demis Hassabis)和约翰·M·詹珀(John M. Jumper),“以表彰他们在蛋白质结构预测方面的成就”。
    德米斯·哈萨比斯和约翰·詹珀成功地利用人工智能技术预测了几乎所有已知蛋白质的结构。而大卫·贝克掌握了生命的构建模块,并创造了全新的蛋白质

  • 揭晓了!2024年诺贝尔物理学奖授予了他们→
    2024年诺贝尔物理学奖:两名科学家因人工智能的根本性进步而获奖
    著名的普林斯顿大学教授、91 岁的约翰-霍普菲尔德和加拿大多伦多大学教授、76 岁的杰弗里-辛顿,“因利用人工神经网络实现自动学习的基础发现和发明”而获奖。
    人工神经网络的灵感来源于我们大脑中的神经元网络。自 20 世纪 80 年代以来,他们一直致力于这一课题的研究。
    诺贝尔物理学奖委员会主席埃伦-蒙斯(Ellen Moons)向媒体解释说:"2024 年的获奖者们利用统计物理学的基本概念设计出了人工神经网络,这种网络的功能类似于联想记忆,能在大型数据集中发现规律”

  • 诺贝尔文学奖要颁给ChatGPT?奥特曼得奖呼声高,Hinton怒斥:他不配!

学习资料

  • 李沐,现任亚马逊首席科学家,人工智能框架Apache MXNet作者之一。
  • 放两个挺有名的深度学习资料,好久之前就看到过了,一直没时间刷完整的。
    有时候可以回来翻翻经典论文。
  • 深度学习论文精读-李沐
    在这里插入图片描述
    动手学深度学习-李沐,2
    在这里插入图片描述

1、摘要、导论、写作技巧

论文原文:deepmind, nature正刊,李沐B站

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

摘要:
Proteins are essential to life, and understanding their structure can facilitate a mechanistic understanding of their function. Through an enormous experimental effort1–4 , the structures of around 100,000 unique proteins have been determined5 , but this represents a small fraction of the billions of known protein sequences6,7 . Structural coverage is bottlenecked by the months to years of painstaking effort required to determine a single protein structure. Accurate computational approaches are needed to address this gap and to enable large-scale structural bioinformatics. Predicting the three-dimensional structure that a protein will adopt based solely on its amino acid sequence—the structure prediction component of the ‘protein folding problem’8 —has been an important open research problem for more than 50 years9 . Despite recent progress10–14, existing methods fall far short of atomic accuracy, especially when no homologous structure is available. Here we provide the first computational method that can regularly predict protein structures with atomic accuracy even in cases in which no similar structure is known. We validated an entirely redesigned version of our neural network-based model, AlphaFold, in the challenging 14th Critical Assessment of protein Structure Prediction (CASP14)15, demonstrating accuracy competitive with experimental structures in a majority of cases and greatly outperforming other methods. Underpinning the latest version of AlphaFold is a novel machine learning approach that incorporates physical and biological knowledge about protein structure, leveraging multi-sequence alignments, into the design of the deep learning algorithm.

翻译:

  • 蛋白质是生命所必需的,了解其结构有助于从机制上理解其功能。通过大量的实验努力1–4,人们已经确定了大约 100,000 种独特蛋白质的结构5,但这只是数十亿已知蛋白质序列中的一小部分6,7。
  • 确定一个蛋白质结构需要数月甚至数年的艰苦努力,这阻碍了结构覆盖的实现。需要精确的计算方法来弥补这一差距并实现大规模结构生物信息学。仅根据蛋白质的氨基酸序列预测其三维结构(“蛋白质折叠问题”8 的结构预测部分)一直是 50 多年来一个重要的开放性研究问题9。尽管最近取得了进展10–14,但现有方法远远达不到原子精度,尤其是在没有同源结构的情况下。
  • 在这里,我们提供了第一种计算方法,即使在没有已知类似结构的情况下,也可以定期以原子精度预测蛋白质结构。我们在极具挑战性的第 14 届蛋白质结构预测关键评估 (CASP14)15 中验证了我们基于神经网络的模型 AlphaFold 的全新版本,结果显示其在大多数情况下准确度可与实验结构相媲美,并且远远优于其他方法。AlphaFold 最新版本的基础是一种新颖的机器学习方法,该方法将有关蛋白质结构的物理和生物学知识、利用多序列比对融入深度学习算法的设计中。

总结:

  • 背景:蛋白质是氨基酸序列,长串的序列会卷在一起,氨基酸之间相互吸引形成稳定的、独特的3D结构,3D结构的形状决定了蛋白质的功能。
  • 目的:给氨基酸序列,预测3D结构
  • 创新点:Alphafold1的结果不够精确,偏差不在一个原子大小的级别之内,而2达到了原子级别的精度。

解读:

  • 摘要的第一段话是说,蛋白质对生命是必要的,回忆下大家的生物学啊,我们会吃很多蛋白质,我们知道蛋白质是一个,非常健康的一种食物,我们体内有很多蛋白质,蛋白质是我们体内干活的那一个东西,我们的很多的生理活动,啊是用蛋白质来完成的,然后他的第一句话的下半段话是说
    了解蛋白质的结构,有助于知道蛋白质的这个功能,我们知道蛋白质就是一串的氨基酸的序列
  • 比如说我们这一个点表示一个氨基酸的话,蛋白质你可认为就是把氨基酸连在一起,通常来说,蛋白质是指比较长的氨基酸的序列,比如说在100个氨基酸的规模,那么长的氨基酸序列连成一条串
    他是不稳定的,他就会卷在一起,你有点像我拿一条橡皮筋吗,然后把它搓一搓搓一搓,然后松开手他就会卷在一起去了,比如说他就会卷成一个这样子的形状,卷完之后就是比较稳定了,因为他的这些氨基酸之间相互吸引,然后形成了一个独特的3D 的结构,然后这个3D 结构的形状啊,决定了你的蛋白质的功能
  • 打一个计算机的比方就是说,氨基酸的序列你可认为是一段代码,然后我们要让他干活的话,我们要把它编辑成一个可执性的文件,那么他卷起来的过程就可以认为是,我把代码编译成我的可执性的文件,通常来说,你的代码就决定了你的最后的可执性文件的样子,他有时候你会发生错乱,比如说 一个序列可以卷成两个不同的形状,这时候通常会带来疾病,所以在正常情况下都是唯一决定的,那么这个地方我们的工作就是说,我们要知道这个代码到底是怎么样,变成这个可执性文件的,这个叫做蛋白质的结构预测
  • 我给你一串氨基酸的序列,然后就预测他的3D 结构长什么样子,接下来是讲我们现在预测的困难
    到目前为止我们大概已经知道,10万左右的蛋白质的结构,但是我们已知的蛋白质有将近10亿种
    我们所以我们只对很少的一部分的蛋白质了解他的功能,
    目前我们可能需要,数月或者数年的时间,才能了解一个蛋白质的结构,具体的做法是说你把这个蛋白质啊,动起来,从不同的角度用显微镜去看他的投影,然后再还原出他的3D 结构,当然这个时又费力,所以他说我们需要更精确的基于计算的办法,能够更便宜更方便的得到一个蛋白质的结构,这个问题叫做蛋白质折叠问题,已经在生物学里面存在了50年了
  • 啊介绍完问题之后来介绍现在的一些方法
    他说当然现在有一些方法了,比如说之前的alphafold1
    用一个神经网络来预测
    是呢他说他的精度不够
    不在原子级别的精度
    也就是说
    你对一个氨基酸位置的预测和实验是真正的
    测到的那一个结果
    他的偏差不在一个原子的大小的级别
    特别是当你不知道
    跟这个蛋白质功能比较 预测的
    其他蛋白质的结构的时候
    这个精度会更差
    接下来就是alphafold2
    他说我们终于提供了第一个模型
    能达到一个原子精度的预测
    也就是说
    你预测的位置
    和你真实测到的位置之间的偏差
    在一个原子大小的级别

写作技巧

  • 这就是摘要
    可以看到他
    前面画了很大的篇幅
    来介绍这是什么问题
    介绍他们的实验结果

    最后很简单的提了一下他们的算法
  • 如果换你来写
    你可能会想说啊
    alphafold2
    我这个模型已经那么那么的复杂
    那么那么的fancy
    那么我是不是应该在摘要里面
    多说几句我的模型的好话呢
    多给大家介绍一下
    我模型的好处在什么地方
  • 事实上我们在前面一期数学定理证明里面有讲过
    这是一类应用性的文章
    你主要的目的是用机器学习这个工具
    啊解决这个领域里面的一个
  • 重要的问题
    所以你关心的是两点
    一点是这是一个什么样的问题
    这个问题重不重要
    对这个领域来说有什么意义
    第二个是你结果的好坏
    你是不是解决了这个问题
    具体来说你用的模型的好坏并不重要
    比如说alphafold2
    就是一个很简单的 mlp
    只要你也能达到原子级别的精度
    那你一样的能上nature的封面
    这个和你做一个特别复杂的模型
    得到同样的结果
    可能共识上来说是差不多的
  • 反过来说
    如果你能用很简单的算法解决这个问题的话
    很有可能已经轮不到你了
    别人已经把它解决了
    所以你就有两个办法
    要么你找一个新的问题
    别人都没用机器学习来做过
    你把它变成一个机器学习的问题
    收集数据可能用简单的模型也就行了
    要么你的问题数据已经摆在那里了
    之前而且有举办过竞赛
    大家都做了很多不一样的方法
    这时候你就需要用一个
    很不一样的很强大的算法
    在算法上创新才行呢
    alphafold2也就是这么出来的

背景知识

  • 蛋白质一级结构:组成蛋白质多肽链(包含多个肽键 -CO-NH-)的线性氨基酸序列
    蛋白质二级结构:依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠
    蛋白质三级结构:通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构
    蛋白质四级结构:用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子
    已知蛋白质序列有数十亿,其中只有大约100,000种独特蛋白质的结构被确定
  • 引用1,2,字幕,在这里插入图片描述

2、方案:模型,编码器,解码器

  • 整体模型结构
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 输入部分
    在这里插入图片描述

  • encoder
    在这里插入图片描述
    与transformer块不同的地方:
    (1)先Pair与MSA的多头注意力交互一次,最后再过MLP后全返回到下面,也就是在每个块中都完成了一次MSA与Pair信息的交互
    (2)多头注意力变两个,先处理行再处理列,因为输入是二维的
    在这里插入图片描述s表示蛋白质数量,第一个是要预测的,后面s-1个是数据库检索出来的
    r表示蛋白质中氨基酸数量
    c是每个氨基酸表示为长度为c的向量(通道数)
    Evoformer是transformer的变种,不同的是transformer接收一个序列为输入,但是这里是二维矩阵
    MSA中每一行都是一个氨基酸序列,每一列是同一个氨基酸在不同蛋白质中的表现
    Pair中每一行列都是氨基酸的两两关系
    最后的输出中c已经很好地捕捉到了氨基酸的两两关系

  • decoder
    IPA接收氨基酸对、序列和回传的特征
    Predict relative …得到蛋白质结构的相对位置
    最后的Predict是预测3D空间中旋转的角度并计算3D位置
    在这里插入图片描述
    两种特征解码得到输出
    在这里插入图片描述

  • 欧几里得变换
    具体来说他用的是欧几里得的变换,或者叫做刚体变换,我们来看一下具体怎么回事,假设这个点在空间中的位置是 x,x 是一个长为3的向量,这个点的位置是 y,那么我们要怎么样从 x 变换成 y 呢,在欧几里得里面他可以写成这样子,y 可以等于对 x 做旋转,就是一个 r,然后再做一下位移,这个地方 r 是一个3*3的一个矩阵,t 呢是一个3*1的一个向量,这样我只要能确定 r 和 t 的值的话,那么我就能从 x 还原到y,这里的好处是说,如果我们对这个蛋白质的整体的结构,做旋转或者位移,就是把一个全局的 r,或者 t 加在整个蛋白质上面的话,他不会影响这些局部的变换,就是导致从 x 变换成 y 的,这个 r 和 t 不会发生变化。
    这样这个表示就是对于,全局的刚体变换是无关的,确定了主干的结构之后啊,上面的每一个氨基酸的下面这些部分,你可认为是,在每一个可以变换的原子 那个地方,我只要去关心他旋转的角度是什么就行了,这就是这个图上各种绿色的圈呢,一旦这个头已经固定在这个地方的话,我只要去关心,那些能够转的地方,到底转了多少就行了,当这个地方的变化呢,还是要满足物理和生物学的定义的,比如说两个氨基酸,只能通过一些特定的角度连在一起,你可以做的办法是说在训练的时候,我可以限制住,我的这些 r 和 t 可以要选取的值。
    在这里插入图片描述

3、实验:数据集,训练,结果

在这里插入图片描述在这里插入图片描述

自蒸馏数据集:

  • 训练样例有 25% 来自蛋白质数据库的已知结构,有 75% 来自自蒸馏集
  • 首先从Uniclust30数据集中筛选出的MSA(筛选标准:序列长度在200~1024之间,序列数大于200,同一序列在不同的MSA中重复出现时需要删除该序列)
  • 然后在 PDB 数据集上单独训练模型,并预测筛选出的MSA中355,993 个序列的蛋白质结构,以此预测结果作为“伪标签”创建一个结构数据集以在训练时使用
  • 对于每个预测残基,通过计算与其他残基的距离分布与参考分布之间的 KL 散度来实现置信度度量
    训练时会屏蔽掉置信度低于0.5 的残基;参考分布则来自序列的随机采样(1000个序列)

消融实验:

  • 主要讲的是一些消融的实验,他主要的结果是放在图四,我们先看一下图4a,图4a这里一共有两个图,他分别是在,casp 14就是竞赛中的结果,以及在 PDB,也就是他用来训练模型的测试数据集上的结果,
  • 这个灰线啊 0表示的是他的基线,如果在灰色的右边就是比0大的话,表示比基线要好,如果在灰线的左边的话表示比0小,那么他就比基线要差,其中每一行表示的是一个方法好,首先看到这是基线,啊基线的结果,大概就是在这个灰线的样子,最上面表示的是如果使用,自蒸馏 会怎么样,也就是使用额外的,没有标注的训练数据集,对他进行训练,可以看到在竞赛数据集上,是高那么一些,但是在 PDB 这个数据集上,还是高了很多,很有可能是说 PDB 这个数据集他的,啊多样性更大一点,他的测试数据更大一点,
  • 下面呢就是去掉一些模块会怎么样,前面的这些都是去掉一些输入的数据,比如说把模板信息去掉,啊损失那么一点,如果呢把其中的一个直方图给去掉,也损失一点,如果呢把,原始的 MSA,但是用一个替代来去掉的话,也会损失掉一些,接下来是对模型的一些变换,比如说把 IPA 去掉,意味着是说你在解码器的时候,我不再使用一个注意力机制,把你的位置信息放进你的氨基酸的向量里面,可以看到会损失一些,但是在 PDB 上好像损失的并不大呀,然后是说,如果你没有使用BERT那种,带掩码的机制会怎么样,在竞赛数据集上还好,但是在 PDB 这个数据集上,损失还是比较大的,哎如果你不做回收,不做那四次回收的话,那损失是比较大的,如果你使用最简单的注意力机制,就是说我先按行做标准的自注意力,然后我再按列做标准的自注意力,而不使用三角更新,或者使用对信息来做偏差,或者使用门可以看到的话,这里差的还是比较大的,在 PDB 的数据上差的更多一些,或者说如果不做端对端的结构梯度,我理解就是你的编码器不参与计算梯度那损失更多了,最后是说你不做 IPA 也不做回收,那损失就是相当的明显这个地方啊,
  • 所以这个图想表达的核心思想是说,我这个网络虽然复杂,但是里面没有一块能去掉,把所有块加起来都是有好处的,但反过来讲这个模型还是相当的复杂,虽然这个地方已经做了很多消融实验了,但是你很难从,系统的对每一个模块看一下,他到底是不是重要,因为里面还是有很多模块没有zhu’yi检查到的,
    在这里插入图片描述

主流评价:

  • 98.5%的人类蛋白质被AlphaFold破译,极大地扩展了蛋白结构覆盖率
  • 数据的免费开放将进一步的激发基础科学、药物研发、合成生物学设计方面的未来发展
  • 人类在认识自然界的科学探索征程中的里程碑事件,大大改进人类对于生命过程的理解
  • 2023年的拉斯克(“诺奖风向标”)基础医学研究奖授予给两位AlphaFold主要研发者

局限性分析:

  • 硬件需求高;不适用于过大的蛋白质或多蛋白质复合体
  • 对已有数据可能存在过拟合(第三方测试显示,已知结构准确率远高于未知结构)
  • 蛋白质结构拥有非常动态的结构,而目前的AlphaFold2 只能预测静态解
  • 可能存在过度工程化(部分技巧的作用存疑);部分超参没有充分测试
  • 没有揭示蛋白质折叠的机制或规则,以考虑解决蛋白质折叠问题
  • 该模型对于固有无序蛋白质是不可靠的,但可以通过低置信度分数传达了信息

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

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

相关文章

微服务day06

MQ入门 同步处理业务: 异步处理: 将任务处理后交给MQ来进行分发处理。 MQ的相关知识 同步调用 同步调用的小结 异步调用 MQ技术选型 RabbitMQ 安装部署 其中包含几个概念: publisher:生产者,也就是发送消息的一方 …

[ Linux 命令基础 2 ] Linux 命令详解-系统管理命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

Linux:vim命令总结及环境配置

文章目录 前言一、vim的基本概念二、vim模式命令解析1. 命令模式1)命令模式到其他模式的转换:2)光标定位:3)其他命令: 2. 插入模式3. 底行模式4. 替换模式5. 视图模式6. 外部命令 三、vim环境的配置1. 环境…

【在Linux世界中追寻伟大的One Piece】多路转接epoll

目录 1 -> I/O多路转接之poll 1.1 -> poll函数接口 1.2 -> poll的优点 1.3 -> poll的缺点 1.4 -> poll示例 1.4.1 -> 使用poll监控标准输入 2 -> I/O多路转接之epoll 2.1 -> 初识epoll 2.2 -> epoll的相关系统调用 2.2.1 -> epoll_cre…

JS爬虫实战之TikTok_Shop验证码

TikTok_Shop验证码逆向 逆向前准备思路1- 确认接口2- 参数确认3- 获取轨迹参数4- 构建请求5- 结果展示 结语 逆向前准备 首先我们得有TK Shop账号,否则是无法抓取到数据的。拥有账号后,我们直接进入登录。 TikTok Shop 登录页面 思路 逆向步骤一般分为…

自由学习记录(20)

PureMVC 把 LoginView 视图组件赋给 viewComponent,然后用它来监听用户事件,更新显示状态。 command 将请求(例如方法调用)封装成一个对象,从而使得用户可以通过该对象来调用相应的操作。 Command(命令…

数据结构-并查集专题(2)

一、前言 接(1)完成剩余题目和了解并查集运用求解最小生成树的Kruskal算法 二、专题训练 2.1 题目总览 前四题见(1) 2.2 1568: 并查集-家谱 思路 首先这个题目的描述就有问题,它说每一组的父子关系由两行组成&…

吾店云介绍 – 中国人的WordPress独立站和商城系统平台

经过多年在WordPress建站领域的摸索和探索,能轻松创建和管理各种类型网站的平台 – 吾店云建站平台诞生了。 应该说这是一个艰苦卓绝的过程,在中国创建一个能轻松创建和使用WordPress网站的平台并不容易,最主要是网络环境和托管软件的限制。…

测试实项中的偶必现难测bug--<pre>标签问题

问题描述: 用户从网上copy的简介信息可能带有<pre>标签,导致安卓上的内容只能一行滑动展示,但是ios有对这个标签做特殊处理: 分析: <pre> 标签是 HTML 中用于表示预格式化文本的标签,它的作用是保留文本中的空格、换行和缩进。它的全称是 preformatted text…

管理 Elasticsearch 变得更容易了,非常容易!

作者&#xff1a;来自 Elastic Ken Exner Elasticsearch 用户&#xff0c;我们听到了你的心声。管理 Elasticsearch 有时会变得很复杂&#xff0c;面临的挑战包括性能调整、问题检测和资源优化。我们一直致力于简化你的体验。今天&#xff0c;我们宣布了自收购 Opster 以来的一…

微波无源器件 OMT1 一种用于倍频程接收机前端的十字转门四脊正交模耦合器(24-51GHz)

摘要&#xff1a; 我们报道了一种用于天文学射电望远镜的毫米波波长接收机的一种十字转门四脊OMT的设计&#xff0c;制造和实测结果。此四脊OMT被直接兼容到一个四脊馈电喇叭来实现可以拓展矩形波导单模带宽的双极化低噪声接收机。使用了24-51GHz的带宽&#xff0c;OMT证实了0.…

如何使用IDEA创建Maven/SSM工程?

鉴于很多学校还在教授SSMJSP&#xff0c;很多同学不会使用IDEA创建Maven工程&#xff0c;这里进行说明 windows下安装jdk并配置环境 添加链接描述Windows下安装Maven并配置环境 首先你要本地安装jdk&#xff0c;Maven并配置基础环境变量&#xff0c;然后对IDEA进行jdk、Mave…

网络安全常见面试题--含答案

本文面试题汇总&#xff1a; 防范常见的 Web 攻击 重要协议分布层 arp协议的工作原理rip协议是什么&#xff1f;rip的工作原理 什么是RARP&#xff1f;工作原理OSPF协议&#xff1f;OSPF的工作原理 TCP与UDP区别总结 什么是三次握手四次挥手&#xff1f; tcp为什么要三次握手&…

C++内存泄漏检查工具——Valgrind(--tool = memcheck)

在写c程序中通常遇到程序崩溃&#xff0c;我们首先想到的是内存问题 如果代码量少看几遍就能看得出来&#xff0c;如果代码量多起来我们就得借助一些工具了比如gdb调试和valgrind中得memcheck来解决内存问题 我用的ubuntu&#xff0c;先安装valgrind sudo apt update sudo a…

库打包工具 rollup

库打包工具 rollup 摘要 **概念&#xff1a;**rollup是一个模块化的打包工具 注&#xff1a;实际应用中&#xff0c;rollup更多是一个库打包工具 与Webpack的区别&#xff1a; 文件处理&#xff1a; rollup 更多专注于 JS 代码&#xff0c;并针对 ES Module 进行打包webpa…

微服务容器化部署实践(FontConfiguration.getVersion)

文章目录 前言一、整体步骤简介二、开始实战1.准备好微服务2.将各个微服务打包为镜像第一种第二种3. 将各个打包好的镜像,通过docker-compose容器编排,运行即可总结前言 docker容器化部署微服务: 将微服务容器化部署到 Docker 容器中是一个常见的做法,可以提高应用的可移…

人工智能(AI)和机器学习(ML)技术学习流程

目录 人工智能(AI)和机器学习(ML)技术 自然语言处理(NLP): Word2Vec: Seq2Seq(Sequence-to-Sequence): Transformer: 范式、架构和自注意力: 多头注意力: 预训练、微调、提示工程和模型压缩: 上下文学习、思维链、全量微调、量化、剪枝: 思维树、思维…

带你读懂什么是AI Agent智能体

一、智能体的定义与特性 定义&#xff1a;智能体是一个使用大语言模型&#xff08;LLM&#xff09;来决定应用程序控制流的系统。然而&#xff0c;智能体的定义并不唯一&#xff0c;不同人有不同的看法。Langchain的创始人Harrison Chase从技术角度给出了定义&#xff0c;但更…

Qt_day3_信号槽

目录 信号槽 1. 概念 2. 函数原型 3. 连接方式 3.1 自带信号 → 自带槽 3.2 自带信号 → 自定义槽 3.3 自定义信号 4. 信号槽传参 5. 对应关系 5.1 一对多 5.2 多对一 信号槽 1. 概念 之前的程序界面只能看&#xff0c;不能交互&#xff0c;信号槽可以让界面进行人机…

《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明

参考 《element plus 使用 icon 图标(两种方式)》使用 icon 升级 Vue2 升级 Vue3 项目时&#xff0c;遇到命名时的实心与空心点差异&#xff01; ElementUI&#xff1a; 实心是 el-icon-more空心是 el-icon-more-outline ElementPlus&#xff1a; 实心是 el-icon-more-fill…