​GLM:AGI 之路

​北京时间 5 月 9 日晚,ICLR 2024 会场,GLM大模型技术团队受邀发表题为 The ChatGLM's Road to AGI 的主旨演讲,全面阐述GLM大模型面向 AGI 三大技术趋势。

第一,GLM-4的后续升级版本即GLM-4.5及其升级模型,应当基于超级认知(Superintelligence)和超级对齐(Superalignment)技术。

GLM大模型团队认为,文本是构建大模型最关键的基础,但下一步则应该把文本、图像、视频、音频等多种模态混合在一起训练,构建真正原生的多模态模型,同时超级对齐(Superalignment)技术将协助提升大模型的安全性。

第二,为解决更加复杂的问题,GLM大模型团队提出GLM-OS概念,即以大模型为中心的通用计算系统。在ICLR现场,GLM大模型团队详细阐述了GLM-OS的实现方式:基于已有 All-Tools 能力加上内存记忆(memory)和自我反馈(self-reflection) 机制,GLM-OS 有望实现模仿人类的Plan-Do-Check-Act 循环。

首先做出计划,然后初步尝试形成反馈,基于反馈结果调整规划,然后再行动以期达到更好的效果。大模型依靠PDCA循环机制形成自我反馈和自我提升——恰如人类自己所做一样。

第三,GLM大模型团队还在现场讲解了自2019年以来团队就一直在研究的名为GLM-zero的技术。GLM-zero旨在研究人类的“无意识”学习机制。“当人在睡觉的时候,大脑依然在无意识地学习。”GLM大模型团队表示,“无意识”学习机制是人类认知能力的重要组成部分,包括自我学习(self-instruct)、自我反思(self-reflection)和自我批评(self-critics)。

人脑中存在着反馈 (feedback) 和决策 (decision-making) 两个系统,分别对应着大模型和内存记忆两大部分,GLM-zero的相关研究将进一步拓展人类对意识、知识、学习行为的理解,换而言之,尽管还处于非常早期的研究阶段,但GLM-zero可以视为通向AGI的必经之路,这是GLM大模型团队第一次向外界公开这一技术趋势。

除了阐述GLM大模型面向AGI的三大技术趋势,GLM大模型技术团队在ICLR主旨演讲中还回顾了国产自研大模型 ChatGLM 的演进之路,向现场近2000名与会嘉宾与学者介绍了GLM系列大模型多项前沿研究成果,涵盖数学、文生图、图像理解、视觉UI理解、Agent智能体、涌现现象等领域。这是中国大模型团队首度登上 ICLR 主旨演讲环节。

ICLR 国际学习表征会议由深度学习巨头、图灵奖获得者 Yoshua Bengio 和 Yann LeCun 在2013年牵头举办,与ICML、NeurIPS 并称为机器学习领域水平最高会议之一。5月7日,ICLR 2024 在奥地利维也纳会展中心开幕,受新一波人工智能浪潮推动,本届ICLR在参展人数、展览规模、论文数量上均创新高。

### 关于 `glm::normalize` 的用法 在 C++ OpenGL 数学库 GLM 中,`glm::normalize` 是一个用于向量标准化的函数。它会返回输入向量的方向单位向量[^1]。具体来说,该函数计算给定向量的长度(模),并将其除以这个长度来得到方向相同的单位向量。 以下是其基本定义和使用方法: #### 定义 ```cpp template<typename genType> GLM_FUNC_DECL genType glm::normalize(genType const &x); ``` 此模板函数接受任意维度的向量作为参数,并返回相同类型的单位向量。如果输入向量的长度接近零,则可能会引发未定义行为或数值不稳定的情况。 #### 使用示例 下面是一个简单的例子展示如何利用 `glm::normalize` 来获取三维向量 `(3, 4, 0)` 的单位向量: ```cpp #include <glm/glm.hpp> #include <iostream> int main() { glm::vec3 v(3.0f, 4.0f, 0.0f); // 原始向量 glm::vec3 normalized_v = glm::normalize(v); std::cout << "Original vector: (" << v.x << ", " << v.y << ", " << v.z << ")\n"; std::cout << "Normalized vector: (" << normalized_v.x << ", " << normalized_v.y << ", " << normalized_v.z << ")\n"; return 0; } ``` 运行上述代码后,输出将是原始向量及其对应的单位向量。对于本例中的向量 `(3, 4, 0)` ,它的单位向量应为约 `(0.6, 0.8, 0)`,因为原向量的长度为 5. 需要注意的是,在实际应用中,当处理可能具有非常短或者零长度的向量时,应该先验证这些情况再调用 `glm::normalize()` 函数以防潜在错误发生。 #### 可能遇到的问题及解决方案 一种常见问题是尝试规范化零向量或将几乎等于零的小数当作有效数据传入 `glm::normalize` 。这通常会导致浮点溢出或其他异常结果。因此建议如下预检措施: - **检查向量大小**: 在执行任何操作之前确认目标向量不是零矢量。 ```cpp if(glm::length(v) != 0){ vec3 normV = glm::normalize(v); } else{ throw std::invalid_argument("Cannot normalize a zero-length vector."); } ``` 通过这样的方式可以有效地防止程序崩溃以及获得不合理的数值输出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值