Category: AI/ML/DL/CV/NLP/RL/Robotics/BigModels/AIGC
-
关于多模态智能的一点思考和分析
关于多模态智能的一点思考和分析 大家好,本篇文章在当前多模态大模型较为流行的背景下,结合个人的理解,做一点扩展的思考,个人观点,仅供参考,欢迎讨论,提供新的视角和观点,谢谢。 多模态AI的背景和应用 关于多模态智能信息处理和生成,早期在实际中的应用是多模态人机交互。 比如通过语音,手写甚至摄像头的信息作为智能设备的输入,经过智能信息处理技术,结果以图像语音等多模态的形式进行输出。 当前人工智能技术发展迅速,多模态的信息处理和生成能力得到了很大的增强,多模态智能已经是现有大模型基本都支持的能力。 比如现在开放的问答大模型,都有根据多个通道的问答生成回答内容的能力。这里列举两个场景: – 场景一:图片OCR识别翻译等综合功能,基于图片的内容进行OCR识别,可以识别出文字,表格,符号公式等等,并且可以保持排版,而且能够自动进行语言的翻译; – 场景二:短视频的自动生成,以及世界模型等等,都是多个通道的融合。 下面就多模态智能从一些概念性总体性的原理性质做一点分析说明: 关于多模态智能的一点思考和分析 人类在多模态智能方面的进化 文明的发展也是历史进程中长时间的生物进化过程中出现的,从单细胞到多细胞,从植物到动物,特别是智人的出现,耳聪目明,心灵手巧,人类首先可能是通过眼睛观察世界,耳朵倾听世界(还有触觉嗅觉味觉感知通道)来不断加深对世界的了解。因此从进化论的视角来看,人类及其祖先首先是在长期的自然演化发展中进化出眼睛器官,具有了感知可见光的视觉能力,人眼的视觉能力较强,真彩色高时间和空间分辨力以及立体空间感知的能力都较为出色,且视觉是人类感知世界的重要的通道,据说人类有70-80%的信息来自视觉通道。随着人类生活的社会化形成,人们从沟通中进化出交流信息的媒介,通过结绳记事,甲骨文等,文字语言逐渐形成并不断走向成熟,竹木简,纸张的发明使得文明更加高效的传播和传承。因此地球上智能的出现,人类发展过程中出现的社会化,后续通过不断的分工,竞争,合作,使得科技,经济等等各方面的文明发展程度得到持续积累和进步。上述只对关键的视觉模态和文字符号模态进行了说明,人类还有好多个其他的模态感知能力,如触觉,嗅觉,味觉等,在地球上的其他生物的多模态感知、处理和生成的计算范式可能框架思想上有共同特性,但也存在着一些甚至很大的差异,比如视觉感知电磁波的频段,处理模态的智能化程度等。也许当前的文明已经有高级的模态而不在本人当前的熟悉认知的区域内(比如量子通信等信息承载的物理模态的原理和应用情况?),也许还存在的其他文明中还有其他的暂不可知的模态,比如可能存在着完全不同形式的符号语言,甚至也有可能存在着其他的物理模态方式还没有被发现。 各个模态通道的特性 各个通道的特性有别,相互之间形成有益补充,视觉通道通过看见内容,通道信息更加具体生动,语言通道虽通过视觉触觉甚至语音通道等呈现,但其元特性在于其符号化的表达各类信息语义,包括文史哲,数理科技等等,都可以通过文字符号语言来表达和描述。人文社科的文字描述思想性社会性的发展和问题,而自然科技等记录科学原理和技术流程等等。如文学的语言在于其表达语义的模糊性多义性,以及丰富想象力和各种语言特有的表述美感,甚至人文领域的书法绘画等艺术也都可以通过特殊的符号语言来个性化的描述; 科学技术的符号语言在于其表述的抽象性逻辑性以及对于自然科技原理的严谨描述,有一种在视觉语音等信息承载媒介之形而上的抽象描述问题事物的优势;不同学科文字的表达能力也不同,总体上说文字语言是对社会发展宇宙形成和演化以文字形式的镜像进行抽象描述,也是人类之间传递信息的重要媒介。 多模态信息相关性及融合 各个模态的信息表示的内容具有相关性,这也是多模态大模型中不同模态信息对齐需要解决的问题,比如文字和图像的语义对齐,文生图,文修图等应用,再比如当前的文字视频生成等最新大模型多模态生成能力,也都体现了不同模态对于信息的表示能力和优缺点,再次具体一点的来做一下说明:文字描述空间图像方面没有具体自然图像方便和具体,自然图像表达信息色彩丰富具体生动但描述抽象的逻辑计算以及丰富多义的语义方面也存在短板。其他模态的信息也有可以类比的优缺点。不同模态的信息也是互鉴和融合的,人类从观察自然世界中得以总结出科学规律,以文字或更多模态的形式加以记录和传承,促进了人类更好更深远的观察理解世界和宇宙。多模态信息的协同融合赋予人类和人工智能等异构庞大节点的众多智能体协同工作和进化,也希望通过这样的科技文明的发展迈向更高级的地球文明; 多模态信息处理和生成的智能体 不仅有多模态的信息表示,还有其处理和生成。因此可以将多模态的信息输入、处理和生成的载体称为智能体。智能的数字(抽象)空间载体是信息,信息可以是传统的各种语言文字(语言为符号描述和抽象的表达,如自然语言,数理公式等),也可以是数字图像、语音、图形等非结构化或结构化媒体形式,信息的编解码方式根据模态信息的特性采用不同的编解码方法后以二进制或其他的存储传输及计算范式进行传播和协同计算。多模态信息的物理(具象)空间载体是纸张,磁盘,电磁波以及人脑的生物记忆功能区等等,而智能体是其物理空间载体和信息空间载体的融合,并融合了不断迭代升级的智能算法,来加工处理以及生成这些多模态的信息。可以说智能体是个很宽泛宏大的范畴,智能本身也是深邃和没有止境的,就如浩瀚无边的宇宙一样。 小结 虽然从现有的人工智能大模型的性能表现来看,虽能做一些不错的工作,但还没有达到熟练专家的水平,大模型的商业应用模式也还在实践摸索中,李飞飞教授也好像说过,从类比来看,机器智能还处于前牛顿时代。虽然这句话是前几年所说,但个人认为智能的发展仍旧还有更多的探索实践空间,也期待人类和机器都能够不断的从智能技术的发展中相互学习借鉴,迭代进步,人类的技术发展可以给机器赋予理性和情感,相互适应和持续协同进化升级,成为彼此的朋友。 注:在原文的基础上做了进一步的扩展说明,原文链接见:https://www.kindlyrobot.cn/2023/12/01/智能的载体是自然语言吗?/
-
机器学习课程文字版更新
大家好,最近本人正在整理机器学习文字版本的相关课程,力求内容完整,逻辑顺畅,降低相关内容的学习曲线,对初学者爱好者友好。内容在公众号(欢迎扫描如下二维码关注)里更新,欢迎大家关注,并期待大家的意见建议,以期向大家呈现更好的内容,谢谢。
-
关于扩散模型的一点总结和思考
人们很多时候都是从其他的学科的知识理论中得以启发,以在各自的领域进行融合创新,这篇短文将扩散模型算法的相关背景做一下介绍,疏漏和不正确的地方欢迎大家批评指正。 首先扩散模型算法从统计物理中的布朗运动和热力学熵中借鉴了相关的思想,在布朗运动过程中,系统中所有粒子的坐标和动量组成的6N维空间被称为相空间 (Phase Space)。相空间中的一个高维点唯一地代表了系统的一个微观状态(微观状态也称Microstate,即某一瞬间所有粒子的精确位置和动量,或者称为一个系统的瞬时状态快照)。系统的熵是对“我们不确定系统究竟处于哪一个具体微观状态”的度量。这个不确定性的大小,由所有可能微观状态的数量以及它们各自出现的概率共同决定。这样的定义和信息论中的对事件的不确定性度量的信息熵有很大的相似之处,或者说信息熵是在热力学熵的基础上对发生事件的不确定性在数学领域的推广。从布朗分子热运动的扩散过程情况来看,一开始不同局部的温度和系统宏观状态不同,但随着分子热运动的扩散过程发生,系统最终趋向于逐渐达到热平衡,最后系统各个部分都在做无序随机的热运动。 扩散模型DDPM在图像生成领域的应用,也可以和分子的布朗运动进行类比,DDPM中,一副图像组成的像素空间和颜色空间组成的张量H*W*C可以类比为分子布朗运动中相空间的一个高维点,因此一张图片就是相空间中的一个点状态(Microstate,或者说是系统在某个瞬时时间的快照),给图像添加噪声的过程好比分子的热运动的扩散过程,从加噪前的微状态到加噪后的微状态的转化逐渐走向了一个更加无须和混乱的结构,最后系统趋于完全随机的白噪声,和布朗运动的热平衡状态相对应。 而图像生成过程是上述扩散过程的逆过程,最终学习到的是特定数据集的数据流形的分布规律,从无序走向有序,也是系统处于熵减的过程,主要是通过神经网络能过学习到当前的噪声,并通过迭代逐渐消除噪声逐渐走向更有序的状态的过程,而这个过程需要有智能的干预或者属于智能系统的演化过程。 熵的概念有可能会在多个领域和方向得以关联甚至有较大的可能结合进行创新,比如说生命的过程,比如说其他系统甚至人文社会科学所研究对象的演化过程,也可能可以从系统的熵状态加以综合分析,但也要理解生命的过程和其他系统的演化过程均不是一个封闭的系统,如何考虑在开放环境下的熵减过程,达到更加有序的状态和结构,本身也是一个需要开放和需要不断总结和思考的问题,希望后续在这方面能有更多的一些思考和总结,也欢迎和期待读者朋友们对这个议题提供更多更精彩的观点和论断。
-
大语言模型基础及应用介绍
大家好,最近对大语言模型基础及应用做了一个系列相关主题的介绍,主要介绍了transformer架构,包括编码器架构及应用(BERT),解码器架构及应用(GPT),以及编码器解码器架构(seq2seq任务)等,同时对较新的大语言模型的架构(MoE)和算法(RLHF, GRPO)等做了介绍,希望能对相关同学们和从业人员有点帮助,谢谢。 References
-
扩散模型基础和应用新版本分享
大家好,最近准备了扩散模型系列知识分享,对扩散基础算法原理和及其在图像生成领域的诸多应用场景做了较为详细的介绍,希望能对相关的读者朋友们在相关方面提供一点有用的资源和信息,期待大家的反馈意见,谢谢。 References
-
强化学习系列算法新版本分享
大家好,最近准备了强化学习原理与实践的系列知识分享,对强化学习的基础算法原理和实践做了较为详细的介绍,希望能对相关的读者朋友们在相关方面提供一点有用的资源和信息,期待大家的反馈意见,以便向大家提供更好的知识内容输出,谢谢。 references
-
机器学习系列算法新版本分享计划
大家好,最近正在准备机器学习原理与实践系列课程,欢迎感兴趣或有意从事相关工作的朋友们一起将机器学习相关算法原理探索和代码实现进行更加具体详细的分析和理解,也希望在知识求学和实践的过程中给大家提供一点帮助,期待大家的反馈意见,以便向大家提供更好的知识内容材料,谢谢。 References
-
SLAM系列之cartographer系统架构分析和总结
这篇文章将对cartographer的系统做一个简要总结,前面系列文章已经对各个子模块做了较为详细的分析和介绍。这里再做一点补充说明:全局优化的结果不会反馈到局部优化的过程,所有子地图构建的时候其栅格的坐标系和轨迹的起始点标准坐标系对齐,点云帧的origin作为初始地图的中心。前面总体的分析内容主要基于二维建图过程展开,具体三维建图的逻辑框架基本和二维建图保持一致,这里暂不准备继续在三维建图方面做进一步详细的介绍。 如下图为cartographer系统的结构图,主要有传感器数据模块,局部SLAM和全局SLAM等关键模块, 在这里将对cartographer系统做一下简要的总结: 1、多传感器基于sensor_collator的缓存并实现同步和分发[2][3];2、点云数据的数据流转和变换,以及同步器range_collator实现多lidar传感器的融合及坐标变换支持(对定义的多个点云帧数据进行聚合并按照时间排序,多个点云传感器的origin也加以记录,以便进行range过滤)[4];3、基于extrapolator的点云点级别位姿估计,基于点云点时刻位姿和点云点局部坐标变换到trajectory统一坐标系下实现点云点去畸变[5][6];4、子地图的表示基于元数据limits和具体的栅格数据grid相结合,子地图的坐标系和轨迹坐标原点坐标系方向保持一致。地图创建的中心点为创建时点云帧的原点坐标,在更新的过程中,每一个点云帧的坐标都会对齐到轨迹坐标轴方向后进行更新,更新的时候基于当前点云点的原点作为射线起始点,在地图表示方面,二维概率栅格地图和tsdf表示方法具有不同的含义,但处理流程类似,三维地图构建扩展主要在地图表示和位姿估计时的自由度的扩展上,其主体流程也基本相同,框架也是复用[7]][8][9];5、基于局部扫描匹配算法实现点云帧位姿更精确估计并更新当前活动子地图[10];6、全局位姿优化,基于点云帧位姿和子地图位姿实现基于位姿图的全局优化,优化的结果不返回更新到子地图。可视化渲染或地图融合时,可以根据submap的全局位姿优化结果和submap对应的和轨迹坐标轴对齐的地图栅格数据做对应旋转变换实现不同子地图的对齐统一表示[11][12]。 以上为对cartographer的系统的部分关键内容做的一个小结,由于其良好的结构设计,cartographer的工程化的设计和实现在应用落地方面具有较为明显的优势,也可以在此现有架构基础之上做扩展开发考虑将当前的一些先进的SLAM算法集成进来。关于cartographer系统的系列介绍暂时就到这里,有疑问的地方欢迎联系沟通确认或勘误,谢谢。 References
-
SLAM系列之cartographer系统中PoseGraph2D全局位姿优化算法实现分析(二)
上篇文章主要向大家分析介绍了cartographer系统中基于ceres的位姿图构建的相关方面的细节,本篇将继续cartographer系统中关于全局优化的流程处理中的更多细节问题。也将继续以问答的形式向大家做分析介绍。 问题1:cartographer的实现中,一般一个点云帧会对应到两个子图中,在动态构建位姿图的过程中,是否是两个子图的全局位姿节点和点云帧位姿节点都要建立约束呢? 回答:计算约束的函数为PoseGraph2D::ComputeConstraintsForNode,在该函数中根据三种情况来计算约束:(1)、根据当前点云帧节点(简称节点)和其相关的正在构建的两个局部地图的全局位姿参数块节点(简称子图节点)之间的约束(INTRA_SUBMAP);(2)、当前点云帧节点和已经构建完成的子图(标记为完成状态)之间可能的回环约束;(3)、如果当前的子图也刚刚标记为结束状态,则需要更新已有的位姿图点云帧位姿节点和当前子图的约束,其中后面两种约束为INTER_MAP回环约束,将在下一个问题中加以具体的描述。 问题2:回环检测和约束如何实现? 回环检测的算法在PoseGraph2D::ComputeConstraint函数中进行的实现,其计算涉及到了轨迹内部和轨迹之间的可能的回环检测。具体会根据条件选择局部匹配搜索和全局匹配搜索。关于其约束构建的具体计算参考ComputeConstraint,下面对其具体的细节做相关分析说明。 其中计算这些constraints的过程也是作为异步背景线程中来运行的。具体更多的实现可以参考ConstraintBuilder2D类中的更多的代码实现细节。 问题3:全局地图的表示以及更新的方法细节如何实现?位姿图进行全局优化后如何更新地图的表示,以及如何更新子地图和点云帧的全局位姿信息? 回答:cartographer_node是cartographer在ROS中最主要的运行节点,在其内部运行了cartographer核心库的实现,包括SLAM的前端和后端,核心库本身不维护全局唯一的大图,但是其会已优化好的子图数据(包括每个子图的网格内容及其最终优化后的全局姿态)以二进制流(pbstream 格式)的形式发送给接收融合节点,如cartographer_occupancy_grid_node,在接收融合节点内会创建一个足够大的消息nav_msgs/OccupancyGrid,并将子地图进行融合后,以/map的ros topic发布出来。 问题4:位姿图优化一般作为背景线程,在什么时候被触发?如何支持多轨迹联合全局优化? 回答:在cartographer的内部实现中,基于线程池和任务队列的方式进行位姿图节点的更新,约束的计算等计算任务较重的计算逻辑,在cartographer中节点(点云帧和子图都有对应的trajectory_id属性,在进行全局优化的时候,不同轨迹的点云帧节点和子图数据更新插入到位姿图的逻辑是统一的接口。位姿图优化的是所有轨迹的节点和子子图节点和约束边的整体全局多轨迹位姿图。在全局的多轨迹地图点云节点联合位姿优化中,已经冻结的轨迹中的点云帧节点和子地图节点在位姿图节点中将会被设置为常量,不参与进一步的优化,也有利于效率的进一步提高。 References
-
SLAM系列之cartographer系统中PoseGraph2D全局位姿优化算法实现分析(一)
这篇文章将向大家介绍2D建图的全局优化算法实现分析的第一部分,主要介绍cartographer系统中基于ceres优化框架下的问题定义和求解的具体实现。后面将继续介绍优化过程中更多的议题,如全局位姿图优化实现中的更多的策略技巧,回环检测和全局地图信息如何维护和更新等。 首先Local SLAM的优化结果会插入到全局优化位姿图中,具体调用过程堆栈可以参考如下的代码片段和相关注释分析。 原始的激光点云帧经过一些列的流转变换和聚合后形成一个较为稠密的逻辑点云(如TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 160,时间跨度会较长一点,后面处理的时候会通过自适应滤波器进行滤波)。该点云帧优化后的位姿等数据作为位姿图的节点插入,同时一个子图中会存在num_range_data个点云帧数据,但是也并不是每一个逻辑点云帧都会加入到位姿图的节点中(比如扫描匹配效果不太好的或运动变化小的将返回nullptr,不会插入到位姿节点中)。接下来将以问答的形式对相关问题进行说明。 问题:cartographer中位姿图优化和局部SLAM的最小二乘非线性优化的不同点,以及和其他SLAM系统的全局BA优化有哪些不同? 回答:在cartographer的系统实现中,基于位姿图的全局优化和局部SLAM位姿优化都是基于ceres::Problem的优化问题定义及ceres::Solver问题求解器相结合的优化问题求解框架来完成的,但在全局位姿图优化中的问题定义方式和局部SLAM的扫描匹配算法中定义的位姿优化求解的问题定义方式有所不同:(1)、通过参数块来定义待优化的变量,在SLAM系统中一般优化变量为位姿,在前文中介绍的局部SLAM优化中没有添加参数块,也就是在局部SLAM中中的优化问题只有一个扫描匹配的过程,没有图优化的节点和边的概念,(2)、通过定义残差项来定义优化的约束和目标,位姿图优化中通过定义残差块的方式将子图内位姿变换约束(INTRA_SUBMAP)或回环约束(INTER_SUBMAP)添加到位姿图的残差模块定义中来,而局部SLAM则将点云帧和局部地图的匹配对齐程度的度量计算作为残差块加入到求解问题框架中来。虽然都是基于最小二乘的非线性优化算法,算法的定义和求解思路是类似的,但是算法的具体对应的问题和算法的求解问题规模有较大的不同,局部SLAM的优化基于当前点云帧位姿构建的最小二乘的非线性优化问题,问题规模小求解速度块,而全局SLAM优化基于逻辑的位姿图的构建,基于大量的点云帧位姿优化变量,以及子地图位姿优化变量作为位姿图的节点,以及上述的INTRA_SUBMAP和INTER_SUBMAP可以看成节点之间的约束的边,构成了逻辑上的位姿图,具体的求解方法基于高斯牛顿法或 Levenberg-Marquardt算法,求解的具体实现细节已经封装在ceres优化求解器的内部(有兴趣的读者可以检索相关SLAM中的优化算法介绍,后面也将会有相关的SLAM专题介绍)。其中添加参数块的代码和注释如下: 添加约束的代码和注释如下: 其中子图的全局位姿和子图的第一个点云帧的节点位姿的相对变换为Identiy变换的约束,但是仍然在优化的时候采用独立优化进行。 References