所有文章

Meta AI 的这些新技术,让机器人拥有「触觉」

拥有「五感」的机器人离我们不远了。 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604992) ·[查看评论](https://www.ifanr.com/1604992#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-06 06:20:19 · 1次阅读
 
 
智氪 | 中证A500哪家强?

作者 | 范亮 编辑 | 丁卯 9月23日,中证指数公司正式发布中证A500指数。 10月15日,10支中证A500ETF募集完毕后正式在上交所、深交所上市交易,首发规模200亿元,并在10月28日扩充至超过470亿元。 此外,10月25日,20家公募基金启动中证A500ETF联接、中证A500指数、中证A500指数增强等场外基金的申购,其中泰康、博时提前结束募集,预计场外基金募集结束后,可以为A500指数带来数百亿增量资金。 **而进入11月后,又有天弘、广发、华夏等12家基金公司的场内中证A500ETF快速获批,并于11月5日陆续进入发行认购阶段,总发行规模预计超200亿元。** **那么,中证A500指数到底是什么?投资者又该如何选择琳琅满目的基金产品?** ### **中证A500指数有何特点?** **指数简单来说就是金融机构或者证券交易所按照特定权重和统计方法编制的一篮子股票组合,**用来反映股票行市变动的一种参考指标。而**指数基金,则是模拟对应指数成分股构成和比例构建的股票组合。** 简单来说,我们常提的上证指数,就由上交所的所有上市公司按一定权重编制而成;沪深300则是由沪深两市市值最大的300家公司构成;中证500则是沪深两市市值排名第301-800名,共500家公司构成。 **那么,中证A500指数是按哪个维度编制的?** 根据中证公司公布的编制方案显示:中证A500指数**从各行业选取市值较大、流动性较好的500只证券**作为指数样本,以反映各行业最具代表性上市公司证券的整体表现。 具体看,选股方式主要有以下几个特点: 1. 剔除**中证ESG评价结果**在C及以下的上市公司证券。 2. 沪深两市的**市值排名在前1500名。** 3. 优选**中证三级行业中市值最大**的股票。 4. 在**沪股通**或**深股通**证券范围内。 从构成上看与沪深300对比,单就权重股构成来看,中证A500与沪深300前20大权重股基本相同。**不过,如果从更广泛的行业构成看,中证A500还是与沪深300有较大区别。** ![](https://img.36krcdn.com/hsossms/20241106/v2_20434a6192f64c41b6febadebcb46a96@5648246_oswg149191oswg541oswg460_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:中证A500、沪深300权重构成  资料来源:中证指数公司官网、Wind、36氪整理 以Wind一级行业为准,中证A500中前五大权重行业分别为**信息技术(19.2%)、工业(18.9%)、金融(14.3%)、材料(11.9%)、可选消费(9.5%),共占比73.8%;**而沪深300前五大行业权重分别为金融(23.4%)、工业(17%)、信息技术(16.6%)、日常消费(11.3%)、材料(7.9%),共占比76.2%。 **也就是说,与沪深300相比,中证A500整体行业分布更均衡,同时信息科技、工业、材料行业占比更高,金融占比则大幅下降,这与目前市场偏爱的新质生产力概念更为接近。** ![](https://img.36krcdn.com/hsossms/20241106/v2_cd6de91819bc4613adc95c4b7b3bbf00@5648246_oswg59836oswg726oswg429_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:中证A500指数行业权重占比  资料来源:中证指数公司官网、Wind、36氪整理 如果与中证全指进行对比,其前五大行业分别为信息技术(19.7%)、工业(19.3%)、金融(14.1%)、材料(12.2%)、可选消费(9.7%),可见中证全指与中证A500行业构成高度相似,**中证A500也更能体现出A股全市场的表现。** **因此,对想要“一次性”买入A股全市场中各行业龙头股的投资者而言,当下中证A500就是最佳选择。** ### **A500指数基金如何挑选?** 对于想要分享中证A500指数收益的投资者而言,目前市场可供选择的基金产品包括**中证A500ETF、中证A500ETF联接、中证A500指数基金和中证A500指数增强基金。** 那么,上述产品有何区别?又该如何选择? **中证A500ETF属于场内基金,流动性较好,投资者开通股票账户或基金账户后可以实时交易ETF。作为场内基金,ETF**价格会受基金本身供需关系的影响而实时波动,因此可能会相对指数产生折价或者溢价。投资者买卖该ETF时,基金公司会收取管理费、托管费等手续费,证券公司会收取交易佣金。 **中证A500ETF联接属于场外基金,无需开户即可购买,但场外基金没有实时价格,只有每日收盘净值,一般在当日下午3点前买卖的基金,净值按当日收盘价计算,3点后买入则按下个交易日收盘净值计算。**在资金分配上,投资者买入ETF联接基金后,基金公司会使用90%-95%资金再去场内买ETF,5%-10%资金留存为活期款项,承担“中间商”的角色。 此外**,ETF联接基金又主要分为A、C两大类,**A类一般会收取申认购费,但不收取销售服务费;C类一般不收取申认购费,但收取销售服务费。**A类适合长期持有,C类适合短期持有。** **中证A500指数基金也属于场外基金,同样无需开户即可购买、无法实时交易,同时也有A类和C类的区分。**与ETF联接基金不同的是,基金公司建仓的并不是中证A500指数,而是会直接使用对应款项去购买股票,模拟中证A500指数的组合。 中证A500指数增强基金,则是指基金公司会使用大部分资金购买股票组合模拟中证A500指数构成,少部分资金则用于其他资产或股票的投资。 **在了解了几类基金的差别后,投资者在分享中证A500指数的收益前,首先需要思考自己对流动性的偏好,从而决定是否要进行场内交易,然后,对于选定的同类基金产品,则要考虑费率是否合理。** ![](https://img.36krcdn.com/hsossms/20241106/v2_dfcfd1e8c8d141c7b149c81460b11e69@5648246_oswg118899oswg830oswg251_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:各类基金产品特性  资料来源:36氪整理 **1. 场内ETF,各家基金费率相同,优选高流动性产品。** 场内交易的10只中证A500ETF是在同一天上市交易,偏“内卷”的竞争下,**10家基金公司的产品均只收取管理费和托管费,**不收取申购赎回费。**同时,10只基金的管理费和托管费在ETF市场中均处于最低水平。** 因此,在手续费费率相同的情况下,投资者应优选流动性较高的ETF,以方便买入/卖出操作,当前按交易份额(类似股份数)看,流动性最高的两只ETF分别为国泰中证A500ETF、景顺长城中证A500ETF。 ![](https://img.36krcdn.com/hsossms/20241106/v2_27a3d541994b43db82debd4824caa83a@5648246_oswg132409oswg759oswg432_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:中证A500ETF产品信息一览(时间截止10.29)  资料来源:Wind、36氪整理 对11月5日起新发行的场内中证A500ETF,考虑到相关产品的认购还需要缴纳认购费用,且ETF基金发行阶段一般是做市商参与较多,因此对想要投资场内ETF的投资者而言,直接购买目前已经在交易中的ETF更加合适。 **2. ETF联接A类基金,优选低认购费率产品,持有期限至少大于7天。** **目前正在发售的中证A500 ETF联接A类基金,基金公司会在管理费、托管费基础上,再收取申、认购及赎回费。**基金发行阶段购买基金称为认购,发行结束后购买基金为申购,**目前除泰康外,其他基金公司均处于认购阶段。** 其中,**各家基金公司的管理费、托管费率均相同,与中证A500ETF保持一致,差异主要出现在认购、申购、赎回费率上。** 对认购、申购、赎回费率,基金公司往往采取阶梯收费的方式,如认购和申购费率按购买金额进行区分,赎回费率按持有期限进行划分。 赎回费率方面,**若持有时间在7日以内,各家基金公司都会收取1.5%的赎回费,短期赎回的代价非常高,但若持有在7天以上,大部分基金都不会再收赎回费。** **申认购方面,华泰柏瑞的认购和申购费率都是最低水平,**认购、申购金额在50万以下时,对应费率分别为0.5%、0.6%。认购、申购金额在50-100万时,对应费率分别为0.2%、0.3%。 当然,**如果认购、申购金额超过100万甚至更高,费率还会进一步降低,如不少基金设置单笔金额超过500万就仅按1000元固定金额收申认费等。** ![](https://img.36krcdn.com/hsossms/20241106/v2_789a477ee1bd431aacc7f0c4e75c8e7d@5648246_oswg124731oswg865oswg246_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:A500 ETF联接A费率比较  资料来源:Wind、36氪整理 **3. ETF联接C类基金,优选低服务费率产品,非大额或超长期持有比A类收费更低** C类基金不收认购、申购费,收服务费,其他费用结构与A类相同,目前**华泰柏瑞的服务费率也处于最低水平,**为0.15%,其余公募基金A500产品的服务费率均为0.2%。当然,C类产品基金也需要持有7天以上,不然会面临较高的赎回费率。 关于A类和C类基金的选择,主要就是比**认购、申购费率与累计服务费率哪个更低。** 以招商中证A500基金产品为例,在基金净值不变的情况下,A类基金认购时一次性收取0.8%认购费,而C类基金每年收0.2%服务费率,C类基金四年的累计费率为0.8%,此时才与A类基金的认购费率接近,**因此,除非投资者打算持有基金4年以上,否则购买C类基金就更划算。** **当然,如果投资者购买金额极高,单笔认购就超过500万,在净值不变的情况下,此时C类基金持有一年的服务费用超过1000元,而A类基金认购费在整个持有周期内只收取1000元,此时A类基金性价比就更高。** ![](https://img.36krcdn.com/hsossms/20241106/v2_44e1fcfe7ac8406f82e6d13f2e452463@5648246_oswg123742oswg632oswg475_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:A500 ETF联接C费率比较  资料来源:Wind、36氪整理 **4.  指数A类基金,各家费用结构基本相同,选择认购费率低的即可。** 目前正在发售的中证A500 指数A类基金,基金公司会在管理费、托管费基础上,再收取申、认购及赎回费,费用收取方式、费率与ETF联接基金也非常接近。 ![](https://img.36krcdn.com/hsossms/20241106/v2_025a49ea6587467a8ccc43dc45302dd0@5648246_oswg114942oswg865oswg275_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:A500 指数A费率比较  资料来源:Wind、36氪整理 **5.  指数C类基金,各家费用结构基本相同,选择服务费率低的即可。** 目前中证A500指数C类基金,与ETF联接C类基金的收费结构接近,但指数C类基金的服务费率会略高于ETF联接C。 ![](https://img.36krcdn.com/hsossms/20241106/v2_ae7b182234424ca887b9901a40b52a66@5648246_oswg81555oswg474oswg439_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1) 图:A500 指数C费率比较 资料来源:Wind、36氪整理 **6. 指数增强基金,各项费率均处于最高值,视需求而定** 目前中证A500共有4只指数增强类基金产品,其管理费与托管费率合计在0.9%以上,远高于纯指数基金0.2%的费率,此外,这类基金申购、认购费率也同样高于纯被动指数基金。 这是因为,增强型基金会有少量资金用于主观性投资,多付的费率相当于购买了基金经理的投研服务,但是否要选择增强型产品,还要由投资者自行决定。 ![](https://img.36krcdn.com/hsossms/20241106/v2_7ae4eb70ffd34e698f14d462eb62d128@5648246_oswg62117oswg831oswg113_img_000?x-oss-process=image/format,jpg/interlace,1/format,jpg/interlace,1)   图:A500 指数增强费率比较  资料来源:Wind、36氪整理 ### **交易选ETF,小额选C类基金** 整体来看,选取中证A500系列基金时,**最好遵循先考虑投资目的,再对比综合费率的方式。** **如果对投资的时效性、流动性有较高需求,那么场内ETF就是最佳的选择;**若无时效性要求,只想要选取一只跟随中证A500指数波动的基金,那么中证A500 ETF联接、中证A500指数基金均在可选范围内。如果在跟随指数波动的基础上,还想要博取更高收益,那么中证A500指数增强基金就是一个不错的选择。 对中证A500 ETF联接、中证A500指数基金的选取上,二者实际上差异并不太大,主要比较哪类基金的综合费率更低。 对A类、C类基金的选择上,对认购、申购金额在100万以下的,如果是超长期持有(3-4年以上),不收服务费的A类基金更加合适,**若持有时间在3-4年以内,那么C类基金累计服务费率一般会低于A类基金的申认购费率。**对单笔认购、申购金额超过500万元,且持有一年以上的,此时C类基金的服务费就会超过申、认购费,那么A类基金就是更好的选择。   *免责声明:  本文内容仅代表作者看法。  市场有风险,投资需谨慎。在任何情况下,本文中的信息或所表述的意见均不构成对任何人的投资建议。在决定投资前,如有需要,投资者务必向专业人士咨询并谨慎决策。我们无意为交易各方提供承销服务或任何需持有特定资质或牌照方可从事的服务。

2024-11-06 02:15:23 · 1次阅读
 
 
OPPO Enco X3 耳机体验:虽迟但到的最佳「苹替」

极易被大多数人感知到的「好声音」。 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1605088) ·[查看评论](https://www.ifanr.com/1605088#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-05 13:56:59 · 0次阅读
 
 
PDF Expert 3 历史低价 7 折,出色的 PDF 编辑器

PDF Expert 作为 Mac 上一款出色的 PDF 编辑器,集阅读、编辑批注、OCR 识别等功能于一身,快速流畅的阅读体验,轻松编辑 PDF 文档,一直以来备受用户好评。 双11大促 PDF E

2024-11-05 09:13:35 · 0次阅读
 
 
开源稍后阅读工具 Omnivore 被收购,并将在本月底关闭

Omnivore 是一款开源的稍后阅读工具,支持抓取微信公众号图片,可整合第三方工具比如 Logseq、Obsidian、Webhooks 等,还支持自托管。近日发邮件称将在本月底停止服务,用户可以在

2024-11-05 06:56:54 · 4次阅读
 
 
25.99 万元!阿维塔 12 增程版发布,还给老用户带来了一大升级

质疑增程,理解增程,加入增程。 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604857) ·[查看评论](https://www.ifanr.com/1604857#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-05 06:29:46 · 1次阅读
 
 
新一代赛博仆人!这款机器人要帮你把各种家务活都做了

谁不想拥有一位「赛博仆人」呢? #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1605009) ·[查看评论](https://www.ifanr.com/1605009#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-05 06:00:34 · 0次阅读
 
 
Sandboxie-Plus – 历史低价 7 折,知名 Windows 沙盒软件,可用来测试、多开软件、隔离环境

Sandboxie-Plus 是一款广受欢迎的 Windows 沙盒软件,能够为用户在 Windows 中提供一个隔离的虚拟环境,用于运行程序。这种隔离机制可以有效保护主系统免受恶意软件、病毒以及意外

2024-11-05 03:41:54 · 6次阅读
 
 
百公里油耗 3.75L!吉利银河星舰 7 亮相,要做每个人的智能精品车

工必有意,强得很朴素。 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1605040) ·[查看评论](https://www.ifanr.com/1605040#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-05 01:29:54 · 2次阅读
 
 
MacBook Pro 还有大更新?等等党又要赢了

更多的 Mac 爆料 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604934) ·[查看评论](https://www.ifanr.com/1604934#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-04 09:47:38 · 0次阅读
 
 
微信 4.0 测试版下载地址,支持 Win、Mac,以及终于有 Linux 版本了

微信 4.0 目前各平台都可以下载使用了,无需任何资格,直接使用,并且因为是测试版,支持双开,另外,终于有深色模式了。最后,终于发布了 Linux 版本。@Appinn 来自 @ZzzzRyan 同学

2024-11-04 09:19:02 · 0次阅读
 
 
2024 双 11 正版软件大促 6 折起,160+ 热门软件无套路折扣直降

2024 双 11 正版软件大促来啦!我们的朋友「数码荔枝」照例为大家带来超过 160 款正版软件的折扣优惠。包括 AdGuard、Downie 4、Xmind Pro、Bandizip 等,另外还有

2024-11-04 07:27:07 · 1次阅读
 
 
篡改猴 Tampermonkey 安卓版扩展已上架 Edge 商店

篡改猴 Tampermonkey 是一款非常著名的浏览器扩展,它允许用户通过油猴脚本(也叫做用户脚本)来自定义或增强网页功能。前几日其安卓版本上架 Edge 商店。目前打开安卓版 Edge 扩展商店就

2024-11-04 06:24:58 · 1次阅读
 
 
iPhone 在全球都卖得更好了,除了中国市场

iPhone 还是「顶梁柱」。 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604824) ·[查看评论](https://www.ifanr.com/1604824#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-03 18:30:59 · 1次阅读
 
 
Thunderbird 安卓版本正式发布:功能强大、注重隐私的电子邮件应用,源自 K-9 Mail

Thunderbird: Free Your Inbox 即安卓版本的 Thunderbird 目前已经正式上架 Google Play,基于开源的 K-9 Mail 电子邮件客户端开发,主打开源,注

2024-11-03 09:29:59 · 1次阅读
 
 
LocalSend 1.16.0 更新,不再支持 Windows 7,非常好用的开源跨平台文件传输工具,附下载地址

跨平台文件传输工具 LocalSend 刚刚更新了最新的 LocalSend 1.16.0 版本。由于 Flutter 不再支持 Windows 7 ,所以从这个版本开始,LocalSend 也不再支

2024-11-03 06:35:59 · 0次阅读
 
 
中国团队夺冠的赛博格「奥运会」,让我们看到人与机器的共生

没有失败者的比赛,为了一个没有障碍的世界 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604878) ·[查看评论](https://www.ifanr.com/1604878#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-03 04:24:20 · 2次阅读
 
 
油耗「2」开头,吉利 EM-i 正式发布,比亚迪终于等来了对手

打不过,就加入。 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604846) ·[查看评论](https://www.ifanr.com/1604846#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-01 15:00:21 · 0次阅读
 
 
营业利润暴跌 41% 的保时捷,开始发力挽救中国市场

性能、智能,齐发力。 #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604723) ·[查看评论](https://www.ifanr.com/1604723#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-01 02:25:01 · 0次阅读
 
 
荣耀 Magic 7 系列发布!AI 深度赋能,手机也能「自动驾驶」

AI 时代「最强」手机 Magic 7 系列,来了! #欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。 [爱范儿](https://www.ifanr.com) |[原文链接](https://www.ifanr.com/1604753) ·[查看评论](https://www.ifanr.com/1604753#comments) ·[新浪微博](https://weibo.com/ifanr)

2024-11-01 02:00:05 · 1次阅读
 
 
聊一聊分布式系统中的时间

![](https://www.raychase.net/wp-content/uploads/2024/10/image-5-1024x768-1.jpg)今天聊一下时间的话题。在分布式系统中,“时间”是一个挺有趣,但是很难处理的东西。我把自己的理解简单整理下来。 <!-- /wp:paragraph --><!-- wp:heading --> ## 不可靠的物理时钟 <!-- /wp:heading --><!-- wp:paragraph --> 首先,单一节点的物理时钟是不可靠的。 <!-- /wp:paragraph --><!-- wp:paragraph --> 物理时钟本身就有偏差,可是除此之外,可以引起节点物理时钟不准确的原因太多了,比如clock jump。考虑到[NTP协议](https://en.wikipedia.org/wiki/Network_Time_Protocol),它基于UDP通信,可以从权威的时钟源获取信息,进行自动的时间同步,这就可能会发生[clock jump](https://linux.die.net/man/2/gettimeofday),它就是说,时钟始终会不断进行同步,而同步回来的时间,是有可能不等于当前时间的,那么系统就会设置当前时间到这个新同步回来的时间。即便没有这个原因,考虑到数据从网络传输的延迟,处理数据的延迟等等,物理时钟是非常不可靠的。 <!-- /wp:paragraph --><!-- wp:paragraph --> 如果一个分布式系统,多个节点想要仅仅依赖于物理时钟来完成什么操作,那么只能祈祷运气足够好了。在[《从物理时钟到逻辑时钟》](/5768)这篇文中,我已经介绍了**<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">对于物理时钟不可靠的问题,我们有一个解决的办法,就是引入Lamport逻辑时钟,或者使用向量时钟</mark>**,这里就不赘述了。 <!-- /wp:paragraph --><!-- wp:heading --> ## 超时 <!-- /wp:heading --><!-- wp:paragraph --> 分布式系统中什么样的执行结果最难处理,成功还是失败?其实都不是,最难处理的结果是超时,因为执行超时了,但是系统却并不知道它: <!-- /wp:paragraph --><!-- wp:list --> - 是没执行, - 是执行成功了, - 还是执行失败了。 <!-- /wp:list --><!-- wp:paragraph --> 所谓超时,一个显然的问题是,超过多少时间才算超时?往往没有一个公式,更没有一个标准答案,我觉得《[Designing Data-Intensive Applications](https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/)》这本书里面对这一点总结得很好——**<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">对于超时时间的定义,其实就是一个tradeoff,一个基于failure detection delay和risk of premature timeouts之间抉择的平衡</mark>**。如果超时时间设置长了,就会减少超时判定的误杀,但是对于系统失败的识别就会延迟;反之,如果超时时间设置过短,那就会触发更多看起来是超时的case,但是它们本身其实并没有真正超时。 <!-- /wp:paragraph --><!-- wp:paragraph --> 通常来说,对于超时的处理,其实办法也不多。一种是放弃,一种是重试。就像消息投递,如果要保证“至多投递一次”,那在投递超时后,就直接放弃;如果要保证“至少投递一次”,那在投递超时后,就重试。如果要重试,那就需要引入保证幂等性的机制。 <!-- /wp:paragraph --><!-- wp:paragraph --> 分布式事务SAGA对于超时的处理,其实也是遵照上面的原则,在系统内单步都成为事务的基础上,把流程视作一个状态机,无论单步操作是成功还是失败,都会根据清晰的预定义逻辑,触发相应的正向流程或者反向流程,可是唯独超时,多数情况下最有意义的事情就是重试,也只能重试,因为谁也不知道它究竟实际是成功了还是失败了。 <!-- /wp:paragraph --><!-- wp:paragraph --> 说完操作超时,再来说一下节点超时。很多分布式系统中都会使用一种lease(租约)的机制,比如一个集群中的leader,作为leader会扮演不同的角色,但是必须要renew这个lease,否则超过一定的时间,无论它给不给响应,它都会被开除出leader的角色,而follower会重新选举(或者其他方式)一个leader。 <!-- /wp:paragraph --><!-- wp:paragraph --> 比较难处理的是,如果这个节点本来是被hang住了,导致了超时,它也已经被踢下leader的角色,但是之后它“活”过来了(比如经过了一个超长时间的GC),它还以为自己是leader,继续去干leader干的事,变成了一个假leader。这其实就是出现了[脑裂](https://en.wikipedia.org/wiki/Split-brain_(computing)),本质上是一个一致性的问题。这种情况比较难处理,因为即便有heartbeat不断检测,在每两个heartbeat的间隙,可能这种重要的变动就发生了。 <!-- /wp:paragraph --><!-- wp:paragraph --> 要解决这种问题,需要使用token fence的方法,即让每次最关键的状态数据的更改,携带一个单调递增的token,这种情况下这个假leader发起更改的token,已经小于系统中最新的token了,接收这个数据更改的子系统应该拒掉这个请求。上面说的节点超时的情况我在《[谈谈分布式锁](/7671)》里面有详细说明。 <!-- /wp:paragraph --><!-- wp:heading --> ## 计算机的两种时钟 <!-- /wp:heading --><!-- wp:paragraph --> 有两种时钟是计算机普遍支持的,**<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">一种叫做time-of-day clock</mark>**,就是我们一般意义上的时钟,代表着相对于1970年1月1日的epoch 时间,也就是Java里面System.currentTimeMillis()返回的。网络时间协议NTP就是用来同步计算机这个时间的。 <!-- /wp:paragraph --><!-- wp:paragraph --> 不过,其实**<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">还有一种时钟,叫做monotonic clock(单调时钟)</mark>**,在Java里面相应的接口是System.nanoTime()。这个时钟有一个特点,就是它永不回头。对于time-of-day clock来说,时间是可能“回头”的,对于很多应用来说,时间回头是要命的。不过这个时钟给出的具体时间却是毫无意义,如果在不同的机器上调用System.nanoTime(),会得到完全随机的结果。API的名字是纳秒,可是这个时钟并不给出到纳秒的时间精度,它的作用是用来帮助计算间隔时间的:在同一个节点,第二次调用的时间减掉第一次调用的时间,这个结果(时间间隔)是严格递增(不回头)的。从这个意义上说,除去时间这个视角本身,这个时钟更像是一个单调的计数器。既然是单调的计数器,就可以用来帮助产生系统严格自增的ID。 <!-- /wp:paragraph --><!-- wp:paragraph --> 下面是System.nanoTime() Javadoc上面的解释: <!-- /wp:paragraph --><!-- wp:quote --> <blockquote><p>Returns the current value of the most precise available system timer, in nanoseconds.<br/>This method can only be used to measure elapsed time and is not related to any other notion of system or wall-clock time. The value returned represents nanoseconds since some fixed but arbitrary time (perhaps in the future, so values may be negative). This method provides nanosecond precision, but not necessarily nanosecond accuracy. No guarantees are made about how frequently values change. Differences in successive calls that span greater than approximately 292 years (263 nanoseconds) will not accurately compute elapsed time due to numerical overflow.</p></blockquote> <!-- /wp:quote --><!-- wp:heading --> ## TrueTime <!-- /wp:heading --><!-- wp:paragraph --> 一般来说,我们都知道计算机的时钟有误差,可是这个误差是多少,差1毫秒还是1分钟,并没有任何严格保证。绝大多数接触到的时间API也是如此,可是,Google数据库Spanner的[TrueTime API](https://cloud.google.com/spanner/docs/true-time-external-consistency)却。它使用了GPS时钟和原子钟两种完全独立的机制来冗余某一个机制失败导致的时钟问题,增加reliability。此外,它还有和System.nanoTime()一样的严格递增的特点。 <!-- /wp:paragraph --><!-- wp:paragraph --> 它有三个核心API,很有意思: <!-- /wp:paragraph --><!-- wp:list --> - TT.now() 它返回 [earliest, latest] 这样一个范围,表示当前时间就在这个范围内; - TT.after(t) 它返回当前时间是不是肯定在t之后 - TT.before(t) 它返回当前时间是不是肯定在t之前 <!-- /wp:list --><!-- wp:paragraph --> 有了TrueTime,这让分布式系统中,本来无法通过物理时钟解决的问题也变得可解决了。比如对于操作冲突的问题,现在的新办法就是等一个buffer时间,TrueTime认为已经前一个操作的结束时间肯定已经过去了,再来启动后一个操作。当然,这个方法的缺点是throughput,因为整个操作周期因为buffer时间的关系变长了。 <!-- /wp:paragraph -->

2024-10-21 00:41:56 · 1次阅读
 
 
豆瓣评分9.0!大师手绘敦煌壁画公开面世

敦煌,是每分每秒都在消逝的人类奇迹,我们每一次踏入都在加速它的消亡。如何更好地保护、传承,是一代又一代敦煌守护人的课题。时逢岁末,中信出版重磅发布年末压轴新品—— 全新升级版《敦煌日历2025》,诚意相见。

2024-10-15 13:59:00 · 4次阅读
 
 
诸葛亮输在不会“摸鱼”

诸葛亮客死五丈原,让司马懿笑到最后,一直是三国历史上让人难以释怀的事情。不过,换个角度看,诸葛亮输掉与司马懿之争,也是在提醒后世的打工人,不要这么卷,该摸鱼的时候要会摸鱼。

2024-10-14 14:22:00 · 1次阅读
 
 
几个有意思的分布式系统设计模式

![](https://www.raychase.net/wp-content/uploads/2024/09/digital-brain-1024x768.jpg)分布式系统有它特有的设计模式,无论意识到还是没有意识到,我们都会接触很多,网上这方面的材料不少,比如[《Catalog of Patterns of Distributed Systems》](https://martinfowler.com/articles/patterns-of-distributed-systems/),还有[《Cloud Design Patterns》](https://learn.microsoft.com/en-us/azure/architecture/patterns/)等等。这里简单谈谈几个我接触过的,也觉得比较有意思的模式。 <!-- /wp:paragraph --><!-- wp:heading --> ## LSM Tree <!-- /wp:heading --><!-- wp:paragraph --> 对于这个话题,基本上第一个在我脑海里蹦出来的就是LSM树(Log Structured Merge Tree)。其实,[LSM树](https://en.wikipedia.org/wiki/Log-structured_merge-tree)本来只是指一种数据结构,这种数据结构对于大吞吐量的写入做了性能上的优化(比如日志写入),同时对于根据key的读取也有不错的性能。换言之,对于读写性能的平衡,**<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">大幅优化了写入,而小幅牺牲了读取</mark>**,现在它也不再被局限于数据结构本身,而是泛化为能够提供这样特性的一种机制。 <!-- /wp:paragraph --><!-- wp:paragraph --> 整个写入过程分为两个部分,为了追求极致的写入速度,写入方式都被设计成追加的: <!-- /wp:paragraph --><!-- wp:list {"ordered":true} --> - C0:这一层其实就是内存中写入的buffer,它的实现可以用RBTree,或者是SkipList,这种树状有序的结构,它的写入和范围查询都很快。在[Bigtable的设计](/6367)中,它被称为Memtable。 - C1:这一层则主要待在磁盘上了,它可以由若干个文件组成,每一个文件都是有序的数据,这样拿着一个key去文件查询对应的数据,根据indexed keys可以用二分法来查找。在Bigtable的设计中,它就是SSTable。<!-- /wp:list --><!-- wp:paragraph --> 所以,为了追求写性能,数据写入会直接插入到C0中,一旦C0达到一定大小,就会建立一个新的C0&#39;来替代旧的,而原有的C0会被异步持久化成C1中的一个新文件(其实就是做snapshot);C1中的文件全都是有序的,它们会不断地被异步merge,小文件不断被合并成大文件(下图来自维基百科)。极端情况下,同一个key可以有若干次更新,并且更新能同时存在于C0和C1所有的文件中。 <!-- /wp:paragraph --><!-- wp:image {"id":7711,"sizeSlug":"large","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/09/image-6-1024x514.png) <!-- /wp:image --><!-- wp:paragraph --> 对于根据key的查询,需要先去C0中找,如果找到了最好,没找到的话需要去C1中找,最坏的情况下需要找每个文件。如果数据存在于多个地方,数据采用的优先级是,C0&gt;新的C1文件&gt;旧的C1文件。 <!-- /wp:paragraph --><!-- wp:paragraph --> 对于不存在C0中的数据查询,为了尽量避免去每一个C1的文件中查询,Bigtable会使用bloom filter来做第一步的存在性判断(校验用的数据全量加载在内存中),根据结果,如果这一步判断通过,这意味着数据可能存在于目标文件;如果没通过,这意味着数据肯定不存在于目标文件。 <!-- /wp:paragraph --><!-- wp:heading --> ## Write-Ahead Log <!-- /wp:heading --><!-- wp:paragraph --> 顺着LSM Tree的话题,说到WAL。WAL适用于解决这样一个问题:一个系统对于写请求有较苛刻的延迟或者吞吐量的要求,同时又要严格保证durability(数据不丢)。 <!-- /wp:paragraph --><!-- wp:paragraph --> 因此直观上,WAL包含三步: <!-- /wp:paragraph --><!-- wp:list {"ordered":true} --> - 首先要求append日志,日志是持久化的,并且可以根据一致性的要求持久化到不止一个存储中 - 接着就是把数据更新到内存的某个数据结构中(比如上面的LSM Tree在内存中的结构C0),这时候同步的请求响应就可以发回客户端了 - C0的数据会异步merge压缩到持久性存储C1中(LSM Tree部分的操作)<!-- /wp:list --><!-- wp:paragraph --> 基本上思路就是把能延迟的操作全延迟了,如果服务端挂掉了,根据持久性存储+日志就可以完全恢复到挂掉之前的状态,因此数据不会丢。 <!-- /wp:paragraph --><!-- wp:paragraph --> 于此,有一系列相关的pattern,比如: <!-- /wp:paragraph --><!-- wp:list --> - Low-Water Mark,低水位线:指的是这条线以前的数据全部都以常规方式持久化了(C1),因此如果节点挂掉的话,只需要根据现有的文件+低水位线以上的日志就可以完全还原挂掉之前的状态,也就是说,理论上低水位线以前的日志可以删掉了; - High-Water Mark,高水位线:日志是持久化的,但是这个持久化需要在多个节点上发生,这条线就指向了最新一条已经成功持久化到“大多数”节点上的日志(这个大多数其实就是Majority Quorum模式)。 - Hinted Handoff,提示性移交,它和WAL有一定类似性,因此经常被放在一起比较:如果一个节点挂掉了,那么更新会跑到另外一个(随机的)节点上面去,等到挂掉的节点恢复的时候,这些数据会被重新写入那个恢复的节点,执行replay从而恢复一致性。 <!-- /wp:list --><!-- wp:heading --> ## Clock Bound Request Batch <!-- /wp:heading --><!-- wp:paragraph --> Request Batch太常见不过了,请求可以批量发送,减少overhead,从而减少资源(网络带宽、序列化开销等等)的消耗。通常的batch是根据大小或者数量来划分批次的,但是修饰词Clock Bound指的是,这样的分批还要依据时间,就是说,系统可以等待一段时间,这一段时间内的请求都可能打包成一个batch,但是这样的打包还要有时间限制,到了这个时间,无论当前的batch有多小,都必须要发送出去了。 <!-- /wp:paragraph --><!-- wp:paragraph --> Kafka客户端就有这样的一个机制,message可以被group,但是: <!-- /wp:paragraph --><!-- wp:list --> - batch.size 这个参数指定batch最大有多少; - [linger.ms](https://docs.confluent.io/platform/current/installation/configuration/producer-configs.html#linger-ms) 这个参数指定了最多等多久。 <!-- /wp:list --><!-- wp:paragraph --> 还有一些流处理系统也采用这种方式,比如Spark的micro batching。 <!-- /wp:paragraph --><!-- wp:heading --> ## Singular Update Queue <!-- /wp:heading --><!-- wp:paragraph --> Singular Update Queue非常有用,queue本身就是用来处理异步的事件,可以有若干个producer产生消息到队列里面,有若干个consumer来处理它们。这种场景下这个queue为核心的机制扮演了至少这样几个角色: <!-- /wp:paragraph --><!-- wp:list {"ordered":true} --> - **缓冲**,平滑请求的波峰; - **流控**,保护下游系统不被负载冲垮; - **校验**,能写入queue的数据一定是符合格式的,从queue读取的数据也一定是符合格式的; - **解耦**,对于MxN的调用关联关系,所有的producer只和queue打交道(写入),而所有的consumer也之和queue打交道(读取),这样,复杂度就变成了M+N。<!-- /wp:list --><!-- wp:paragraph --> 对于写请求,我们需要保证这些事件处理不会有并发的问题,通过采用Singlar Update Queue,对特定的topic,我们可以设计一个良好的sharding规则,加上对于每一个sharding(在Kafka等系统里面我们叫做partition),设置为只有一个consumer线程,这样的话就保证了不会有并发问题,因为只有一个线程来处理所有这个sharding的消息,这种方式可以简化系统,不需要引入第三方锁系统就可以处理同一个sharding之间存在并发冲突的消息。 <!-- /wp:paragraph --><!-- wp:paragraph --> 我想起另外一个相关的话题,monolith(单体应用)还是microservices(微服务),一直是一个争论。早些时候,在微服务概念刚提出的时候,它受到了追捧,但是现在出现了越来越多批评的声音。一个突出的微服务的问题就是各个微服务之间像蜘蛛网一样复杂调用依赖的问题。而这样的问题,其中一个解决办法就是引入这样的queue在中间解耦。 <!-- /wp:paragraph --><!-- wp:paragraph --> 有些时候,queue里面未必存放全部完成update所需的数据,而是只放很少的内容,比如只有一个key,consumer拿到这个key以后去别的service获取完成任务需要的信息,因此这个queue就起到一个通知的作用。这其实就是Claim Check模式了。 <!-- /wp:paragraph --><!-- wp:heading --> ## Asynchronous Request-Reply <!-- /wp:heading --><!-- wp:paragraph --> Asynchronous Request-Reply本身是一个简单而且常用的机制,就是请求发起以后,服务端响应说,请求任务正在处理中,并返回给client一个token。后续client拿着这个token就可以来(可以是另外一个单独的用于状态查询和结果获取的服务)查询请求的处理状态(poll),同时,服务端也可能会通知(push)客户端情况。 <!-- /wp:paragraph --><!-- wp:paragraph --> 不过,既然上面谈到了Singular Update Queue,它们俩有时是有关联的。 <!-- /wp:paragraph --><!-- wp:paragraph --> 在使用Singular Update Queue的时候,如果consumer处理一个消息需要花很长的时间,那么它就可能成为整个系统吞吐量的瓶颈。很多时候,这个consumer花很长时间来处理往往不是因为有复杂的CPU计算,而是等待,比如等待一个远程调用结束,等待一个文件写入结束等等。 <!-- /wp:paragraph --><!-- wp:paragraph --> 对于这样的问题,有两种解决思路: <!-- /wp:paragraph --><!-- wp:list {"ordered":true} --> - **一种是划分出更多的partition**,这样就可以设置更多的consumer线程来处理,但是这种方法带来的代价是更高的overhead。 - **第二种是把处理流程变成异步执行的**,而把它变成异步的就意味着系统没法直接妥善处理异步处理结果(它可能成功,也可能失败),因此对于这样一个子问题,有两个进一步解决的思路: - **触发处理流程之后,预约下一个“回访”**,也就是采用这里提到的Asynchronous Request-Reply这样的机制,但是这个回访需要在一定时间后发生,并且一定要发生,因此这需要一个高可用的定时任务的服务(需要支持重试策略和失败处理),或者是封装一个delay queue,即里面的消息需要过一段时间才能被poll到,因此这个机制有可能会比较复杂。 - **还有一个思路则是让consumer来集成Coroutine**,这样一个consumer线程可以被分享同时处理若干个消息,这些消息都来自同一个partition(有一些开源库就专干这个事儿),于是这样多个消息就可以被同一个线程以非阻塞的方式并行处理。这个方法的一个局限性是,这些消息在Coroutine框架内处理时,不能存在并发冲突的问题。<!-- /wp:list --><!-- wp:heading --> ## Rate Limiting &amp; Throttling <!-- /wp:heading --><!-- wp:paragraph --> 最后比较一下Rate Limiting和Throttling。我也是不久前才区分清楚,以前我基本是把它们混在一起使用的。它们都是用来限流的,并且有多重不同的方式,可以是基于fixed window,sliding window等等。 <!-- /wp:paragraph --><!-- wp:paragraph --> 但是它们的区别,本质上是它们工作的角度不同。**<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">Rate Limiting是从client的角度来管理资源的</mark>**,比如说,规定某一个/每个用户对于资源的访问不能超过一定的限度,因为资源不能让一个客户端全占了,这样其他人才可以有访问资源的权利;**<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">而Throttling则是从service的角度来管理资源的</mark>**,比如说,规定某个/每一个API的访问throughput上限是多少,一道超过这个限度,请求就会被拒掉,从而保护服务。 <!-- /wp:paragraph --><!-- wp:paragraph --> 和这两个可以放在一起的,其实还有一个Circuit Breaker,不过Circuit Breaker的功能和这两个有较大区别,不太容易弄混,因此就不赘述了。 <!-- /wp:paragraph -->

2024-10-02 00:46:16 · 3次阅读
 
 
为什么即时战略游戏越来越落寞?

## 硬核科普警告! 即时战略(RTS)在过去30年的发展中,传统型RTS已经衍生出了三种细分品类,分别代表着三种玩法设计侧重,他们是战术型、战略型、动作型。**题主提到的落寞应该是特指传统型RTS和动作型RTS**,他们代表了RTS的席卷行业的起源时代,以及达到RTS热度顶峰的电竞时代。 ![](https://pic1.zhimg.com/v2-8ce2dcda8f2e65daf84aa42138da0dda_720w.jpg?source=b1748391?rss) 这是一种并不算公认的分类方案,几乎只被开发者和学院派认同,玩家们的分类标准则是众说纷纭。而**对于多数游戏的发行商来说,他们更乐意于混淆各种RTS的定义,甚至带上即时战术的标签,以此来拓展游戏销路的受众面,并且吃到冷门品类的舆论支持红利**,也就是我们常听到的口号“现在还有在做RTS的...必须要支持”。不过作为玩家,我们能够清晰的体会到这四类RTS的根本差距,玩法的互不相通让我们能很好的辨认他们的区别,我对此做一点简单的介绍。 <blockquote>注:本文仅限于在游戏设计上满足即时战略四大要素、且即时制的游戏作品,即包含:资源采集、生产建设、发展科技、单位控制要素又是即时制的游戏,详见RTS维基百科<sup data-text="即时战略维基百科" data-url="https://en.wikipedia.org/wiki/Real-time_strategy" data-draft-node="inline" data-draft-type="reference" data-numero="1">[1]</sup></blockquote> - - - ### 1.战术型即时战略: 倾向于人员布置、战术安排与使用的玩法;拥有复杂地形环境和丰富战场条件,不再重视采集资源与生产建设,而是专注于发展科技和单位控制要素<sup data-text="策略游戏:第五部分——实时策略游戏与回合制" data-url="https://web.archive.org/web/20081221074049/http://archive.gamespy.com/articles/february02/strategygames05/" data-draft-node="inline" data-draft-type="reference" data-numero="2">[2]</sup>。代表作有英雄连1、星战战争帝国、先祖遗产、战争黎明2、钢铁收割。玩家需要考虑的是各种不同类型的单位,如何进行战术协同,是在铺设地雷后坚守高地、还是在机枪扫射下突击大桥等等<sup data-text="《英雄连游戏评论》" data-url="https://web.archive.org/web/20071130081116/http://ve3d.ign.com/articles/reviews/4043/Company-of-Heroes-Review" data-draft-node="inline" data-draft-type="reference" data-numero="3">[3]</sup>,总之,在你思考完战术安排后,布置相应人员并根据情况变化,随时做些简单的调整即可。 ![](https://picx.zhimg.com/v2-c956ef86db959548275c4df0e49bbf4c_720w.jpg?source=b1748391?rss) 这类RTS的微操作空间少,掩体需要进驻时间、火炮需要架设过程、机枪需要放置动作,生效反馈有延迟性,如果玩家频繁的进行指挥,反而会打乱单位原本的行动进度。单位在战斗时虽然有一定的命中随机性来控制单位平衡,不过一直打不过敌人一定是思路有问题,只要策略上有针对性就必然会获得胜利——这是因为战术型即时战略本就是汲取了相近的游戏类型即时战术(RTT)的成功经验,与RTT一样强调兵种独立性、重要性、配合复杂地形环境和丰富战场条件带来更多战术可能性。<sup data-text="即时战术游戏定义" data-url="https://en.wikipedia.org/wiki/Real-time_tactics" data-draft-node="inline" data-draft-type="reference" data-numero="4">[4]</sup><sup data-text="Destructible environment 场景破坏 - 维基百科" data-url="https://en.wikipedia.org/wiki/Destructible_environment" data-draft-node="inline" data-draft-type="reference" data-numero="5">[5]</sup>单位有着明显的克制关系,一支机枪小队压制价格远超自身的十队精英步兵不在话下,很少有其他RTS中的不死族蜘蛛、虫族刺蛇、苏军天启坦克这种什么都能打的万金油兵种,同样也就因此少有能让玩家“F2A”的时候,导致传统型与战略型RTS玩家普遍感觉打起来不够爽,没有部队规模养成后,全面进攻时碾压式的正反馈。 考虑到这一类型大量参考了RTT游戏设计,在历史溯源方面没有必要深究,毕竟RTT游戏比RTS的出现还要早,战术型RTS的首个作品一般被认为是来自遗迹娱乐开发的战争黎明1,<sup data-text="战锤40k:战争黎明 - 维基百科" data-url="https://en.wikipedia.org/wiki/Warhammer_40,000:_Dawn_of_War" data-draft-node="inline" data-draft-type="reference" data-numero="6">[6]</sup>并在同样是遗迹娱乐开发的同类型后续作品英雄连1中达到时代巅峰水准,尽管取得了巨大的成功,但在其正统续作英雄连2中,遗迹娱乐仍然选择靠近动作型RTS,提高了微操收益并加快了游戏节奏。 战术性RTS由于游玩时经常带有一定的石头剪刀布式的三角克制解谜属性,需要思考战术应对,又追求即时制游戏的快速交互,对于普遍喜欢缓慢进行规划的策略游戏玩家群体并不友好,所以成为了目前最冷门的RTS玩法分支,如果对这类游戏有着极大热忱却找不到游戏可玩,更推荐诸如钢铁之师2、终极将军、叙利亚战争、战争游戏红龙等类型相对近似的RTT游戏<sup data-text="即时战术商业游戏表" data-url="https://en.wikipedia.org/wiki/List_of_real-time_tactics_video_games" data-draft-node="inline" data-draft-type="reference" data-numero="7">[7]</sup>,或是全面战争这种混合型RTT作品。<sup data-text="RTS的现状 - 为什么闪电战和全面战争并不是RTS" data-url="https://web.archive.org/web/20060409154749/http://pc.ign.com/articles/700/700747p1.html" data-draft-node="inline" data-draft-type="reference" data-numero="8">[8]</sup> ![](https://pic1.zhimg.com/v2-b83b7dcacaee9f87fd28093f63f030ab_720w.jpg?source=b1748391?rss) ### 2.动作型即时战略: 倾向于高速反应、快速操作、瞬间反馈玩法;单位拥有极高的反应速度,强调微观管理<sup data-text="维基百科 - 微观管理和宏观管理" data-url="https://en.wikipedia.org/wiki/Micromanagement_(gameplay)" data-draft-node="inline" data-draft-type="reference" data-numero="9">[9]</sup>,对局有短时长且快节奏的特征。代表作有星际争霸2、红色警戒3、帝国时代4、魔兽争霸3,动作型RTS的底层逻辑在大体上就是传统型RTS,然而游戏速度远快于传统型RTS、微操收益也远高于传统型RTS,即使是同水平的高手,也会因几次失误的微操作而完全失去战场的主动权,是否强调微观管理的设计是区别一款RTS是动作型还是传统型的重要依据。 ![](https://pic1.zhimg.com/v2-5e9e33b7101888f3944d67669ce5d053_720w.jpg?source=b1748391?rss) 与战术型RTS相同,这两种RTS都有微操作,不过实际的设计思路和游玩思路完全不同,动作型RTS的单位通常没有自主意识,难以独立行动,需要玩家不断下达非常具体的新指令来进行调整(走位/攻击/释放技能等)农民或工人单位被打了也就是走一步/挪一下,无法预设行为并自主化执行<sup data-text="“按钮保姆”批评" data-url="https://en.wikipedia.org/wiki/Real-time_strategy#cite_note-babysitting-49" data-draft-node="inline" data-draft-type="reference" data-numero="10">[10]</sup>,加上单位有着极高的反应速度,所以微操作收益极高,正反馈非常强;战术型RTS的单位则普遍拥有自主能力,尽管需要玩家在战斗前做更多安排,但是开始战斗后往往不需要频繁调动,他会根据预指令进行应对。举例英雄连1的机枪班实际使用过程为:你去这个战壕中 - 面朝这个方向,实际单位执行为:我去这个战壕用机枪看守这个方向,如果有什么动静我就扫射他,压制出现的敌人,直到玩家给我新命令为止。<sup data-text="实时游戏玩法常常退化为“反应冲刺”《星际争霸 vs 战争黎明》" data-url="https://web.archive.org/web/20090414092309/http://pc.ign.com/articles/533/533146p1.html" data-draft-node="inline" data-draft-type="reference" data-numero="11">[11]</sup> ![](https://picx.zhimg.com/v2-1746ce5267ee817017649b962b239ba8_720w.jpg?source=b1748391?rss) ![](https://picx.zhimg.com/v2-d1ab48afebf77016d97adb27d9fe78cf_720w.jpg?source=b1748391?rss) 星际争霸2在后期的合作模式更新中参考战术型RTS,添加了右键开启幽灵自动狙击、追猎者残血自动闪现等功能,不过没有在策略层面上有对应设计,导致这些改动仅仅是增加便利性的功能,换言之只是用来给玩家爽的,缺乏深度,这就是不同RTS设计思路会产生不同玩法的体现。<sup data-text="Gamesport - 横扫千军:下达命令而不是操作" data-url="https://web.archive.org/web/20130910070302/http://www.gamespot.com/gamespot/features/all/real_time/p5_01.html" data-draft-node="inline" data-draft-type="reference" data-numero="12">[12]</sup> ![](https://picx.zhimg.com/v2-e010de6a552eeabc36db4fe059c7985e_720w.gif?source=b1748391?rss) 少数人认为动作型RTS最初的起源,是暴雪缔造的RPG+RTS的概念,魔兽争霸3几乎是完美的将其执行了,多数人则认为星际争霸1才是动作型RTS的起源,然而考虑到星际争霸1有着节奏缓慢、延时反馈的复杂战略纵深,低地打高低时严重的命中率惩罚等设计,开发者设计意向是否更接近于传统/战略型RTS仍有待商榷;不过其续作星际争霸2,依靠单位主动聚团的鱼群算法、大量核心单位无法移动开火等放大操作收益的设计,加上令人咋舌的顶尖游戏质量,一举成为了动作型RTS中无可争议的巅峰,所以星际争霸系列作品应当拆分看待。 该类型因为有着和射击游戏、格斗游戏一样的高速、短时、强对抗的特性;又没有侧翼攻击、包围惩罚、地形效果等复杂机制,降低了观看门槛,配合RTS独特的大规模战斗玩法,令其迅速成为高观赏性PVP游戏中的热门项目,让无数其他类型RTS垂涎不已,在2002-2012这十年间掀起了业界狂热的电竞化浪潮,各界媒体高呼“高操作和强竞技才是RTS的未来”<sup data-text="RTS演变成了点击盛宴 - 战争剧场 采访" data-url="http://www.armchairgeneral.com/articles.php?cat=59&amp;p=2806&amp;page=1" data-draft-node="inline" data-draft-type="reference" data-numero="13">[13]</sup>大量战术/战略/传统型RTS转型成为动作型RTS以迎接时代,直到2013年星际争霸:虫群之心发布后,这一盛况终于结束。<sup data-text="Point – CounterPoint 回合策略与即时策略" data-url="https://web.archive.org/web/20070226185919/http://www.strategyplanet.com/features/articles/pcp-turnvsreal/" data-draft-node="inline" data-draft-type="reference" data-numero="14">[14]</sup> **动作型RTS和其电竞化对即时战略影响深远,几乎改变了一代人对于RTS的认知。直至今天,多数人仍拒绝承认其他类型RTS是真正的RTS,并提出没有高APM的操作收益与主PVP设计就失去了RTS应有的刺激感和观赏性等观点**。在这一历史进程中,包括命令与征服4、英雄连ol、战争黎明3、侵略行为在内的无数盲目角逐动作型RTS的作品宣告死亡,也有很多坚持其他类型RTS的作品,在其市场迅速缩小后选择离开,最终酿成RTS游戏界尸横遍野的惨状,是一段从百花齐放到一枝独秀的独特历史阶段,不过这一状况实际上与暴雪无关,就像雅达利大崩溃并不能将其归咎于动视开发的作品太过优秀,争相模仿的根源还是市场需求的改变与开发商逐利的体现。目前,动作型RTS仍在公众心目中占即时战略这一类型的主导地位。 ![](https://picx.zhimg.com/v2-8884fa6dd47defc94eb9900edf5eb933_720w.jpg?source=b1748391?rss) 在Steam上我们可以轻松的找到“动作即时战略”的标签,但是,你会发现该标签下的游戏内容非常繁杂,这是因为这一概念早期是部分人用来概括魔兽争霸3中澄海3C、Dota、真三、火影等强调微观管理地图的玩法名词<sup data-text="MOBA 的历史:从模组到轰动" data-url="https://venturebeat.com/2014/09/01/the-history-of-mobas-from-mod-to-sensation/" data-draft-node="inline" data-draft-type="reference" data-numero="15">[15]</sup>,后来在Dota2、LOL等游戏被独立划分为Moba类型后,这一概念回归了即时战略本源;<sup data-text="MOBA 游戏类型的程序地图和角色生成" data-url="https://publicaciones.eafit.edu.co/index.php/ingciencia/article/view/2641" data-draft-node="inline" data-draft-type="reference" data-numero="16">[16]</sup>另一方面,**很多开发者真的将动作、射击、即时战略在游戏中进行了结合,让玩家能够扮演士兵执行射击、匍匐、砍杀、换弹等微操,并且进行即时战略玩法**<sup data-text="游戏革命 - 战区98游戏评论" data-url="https://web.archive.org/web/20070218035657/http://www.gamerevolution.com/review/pc/battlezone" data-draft-node="inline" data-draft-type="reference" data-numero="17">[17]</sup>,比如可执行突击2、夺取前线、第七区、双子星系军阀、物竞天择、战区98、空甲联盟、盛衰记战火文明等等,所以标签页的混乱是必然的,就像RPG这个标签一样囊括了太多玩法。 ### 3.战略型即时战略 倾向于宏观战略,不断制定长远规划的慢节奏玩法<sup data-text="维基百科 - 微观管理和宏观管理" data-url="https://en.wikipedia.org/wiki/Macromanagement_(gameplay)" data-draft-node="inline" data-draft-type="reference" data-numero="18">[18]</sup>;往往拥有超大规模战争、复杂的游戏系统、高度自主化的单位Ai或自动化流水线、以及长时间的单局游戏,不断鼓励玩家追求并维持多种战略平衡,很多作品甚至超出简单的军事范畴,拥有外交、经济、文化等元素。这一类型的分支目前的发展、正在尽可能的避免走向传统型RTS杂而不精的老路,所以作品普遍有着较强的玩法侧重性,有些侧重经济、有些侧重战争、有些侧重外交。在其尚不成熟的早期阶段,代表作有横扫千军、太阳帝国的原罪、要塞、傲世三国、骑士与商人,他们有些有着简单的外交系统、幸福度机制,或是颇有说法的建筑学、考验长期布局能力的战略纵深等等,然而都属于浅尝辄止的水平。<sup data-text="最高指挥官设计师:即时战略应该有更多战略元素" data-url="https://en.wikipedia.org/wiki/Real-time_strategy#cite_note-christaylor-51" data-draft-node="inline" data-draft-type="reference" data-numero="19">[19]</sup> ![](https://picx.zhimg.com/v2-75af98d77160bef59b5624551cc46f24_720w.jpg?source=b1748391?rss) 而看向现代的战略型RTS,则有着轻量级和重量级的区分,以北境之地、冒险之旅十字军、粒子舰队、奇点灰烬为代表的轻量级,精简了游戏内容,并将各个系统更成熟的整合在一起,实现了易于上手,难于精通的特性,十分适合作为类型的入门作品;以至高统治者、欧陆风云4、纪元1800、信长之野望为代表的重量级,反其道而行之,令游戏机制爆炸性延伸,让游戏目标的选择多种多样,能够让玩家带有明确目的进行重玩,比如王国风云3和女儿乱伦生子、钢铁雄心4苏共施密尔舒间谍局、地球不屈的抵抗胜利/杀戮胜利等等,玩法路线之多令人眼花缭乱,且都能达成不同乐趣,<sup data-text="千篇一律的战术 - “RTS 的未来——反意见”" data-url="http://www.gamasutra.com/php-bin/news_index.php?story=17098" data-draft-node="inline" data-draft-type="reference" data-numero="20">[20]</sup>也因此而让人望而却步,是既难上手也难精通。 这两种类型并没有明显的划分界限,一般只取决于开发者想设计一个简单的还是复杂的作品,玩家则可以通过游戏体量来进行简单的划分。 ![](https://pic1.zhimg.com/v2-ff3b2aed41e8c9c1af884a6c42fd9893_720w.jpg?source=b1748391?rss) <blockquote>部分通过兵棋、4X、经营模拟与即时战略相结合的作品,他们有一种目前公认的称呼是“大战略游戏”当然,这其中也有着即时大战略与回合大战略的区别,我们这里特指即时大战略。</blockquote> 战略型RTS的首部作品一般被认为是1997年发售的横扫千军。在其引入了风力、风向、重力、潮汐、水深、视野能见度、理论射程、地貌交互性、流体经济平衡、战略地图、真实雷达系统、自主化单位Ai、自动化生产等诸多设定后,过多的战略元素交互让游戏性质完全脱离了玩家认知中RTS框架,不仅收获了开发者和媒体界的一片盛赞,甚至独立成了一个专注于军事战略玩法的横扫系RTS<sup data-text="横扫千军 - 维基百科" data-url="https://en.wikipedia.org/wiki/Total_Annihilation" data-draft-node="inline" data-draft-type="reference" data-numero="21">[21]</sup>(另称TA系RTS)对行业影响十分深远。该类型作品在之后的25年内衍生出大量精神续作,但开发商们却无一例外的均在一片好评声中破产,其过程之悲壮令人难以直视,为行业输送了大量宝贵经验。<sup data-text="GameSpot 有史以来最伟大的50款电子游戏" data-url="https://web.archive.org/web/20100612205059/http://www.gamespot.com/gamespot/features/all/greatestgames/p-43.html" data-draft-node="inline" data-draft-type="reference" data-numero="22">[22]</sup> ![](https://pic1.zhimg.com/v2-24ea40444b59c193967bc621ad4626ae_720w.jpg?source=b1748391?rss) 当然,横扫系RTS的发展并不能代表整个战略型RTS的发展,要塞(2001)和太阳帝国的原罪(2008)也是众多推动者中的代表,前者尝试将社会模拟和模拟经营融入RTS<sup data-text="CGW 游戏领域的最佳游戏" data-url="http://www.cgwmuseum.org/galleries/issues/cgw_213.pdf" data-draft-node="inline" data-draft-type="reference" data-numero="23">[23]</sup>、后者尝试总结猎户座在内的多款4X游戏经验<sup data-text="太阳帝国的原罪 IGN开发者访谈" data-url="https://web.archive.org/web/20070805030848/http://pc.ign.com/articles/807/807956p1.html" data-draft-node="inline" data-draft-type="reference" data-numero="24">[24]</sup>,将探索与外交和RTS的基本玩法进行了优秀结合;还有目前在策略游戏圈内风头正劲的瑞典开发商P社,也曾发行过王权(2001)与荣耀骑士(2005)谨慎探索高单位自主性的战略型RTS玩法。不过,考虑到该类型作品在很长一段时间内叫好不叫座,资料相对匮乏,历史查阅和取证非常困难,故对此不再展开,仅做简单介绍。 在实际游戏中,战略型RTS与其他三种类型有着本质上的区别,不仅操作空间小,反馈延迟大,部分作品甚至完全不允许玩家干涉过于微观的内容(微操)只能通过改变战略布局去间接形式影响。以钢铁雄心4的军事方面为例:玩家无法预设步兵、坦克、火炮单位的作战规则,这些由国家军事部门研究的陆军学说和部队将领负责,军队将根据当时的地形、士气、后勤、情报等情况选择战术进行战斗,在这件事上,玩家需要考虑到是“去哪打,让谁去”而具体到“怎么去,怎么打”那就不是玩家要管的了。也就是说,玩家若想要让战斗的“起因、经过、结果”都很顺利,那么你应该在“时间、地点、人物”上面下功夫,抓好时机,挑好地点,任命好将领安排好部队,选择机动作战或优势火力等陆军学说、制定长远战略,然后迎接水到渠成的胜利。 ![](https://pic1.zhimg.com/v2-29b4f7687b1057c07061d32dd572d551_720w.jpg?source=b1748391?rss) 宏观的战略型RTS已经走出最艰难的时刻,是目前发展最为蓬勃的RTS分支,市场占有率节节攀升。因其操作量小,决策量大的特性,开发者们也脑洞大开,不断整合棋牌、塔防、自动化工厂、生存等与这一特性相同的游戏元素,故而吸纳了大量其他类型的优质策略游戏玩家<sup data-text="“策略游戏:第六部分 – 游戏类型的发展方向”" data-url="https://web.archive.org/web/20071030014041/http://archive.gamespy.com/articles/february02/stratfinal/" data-draft-node="inline" data-draft-type="reference" data-numero="25">[25]</sup>,亿万僵尸、Desynced、反叛公司、像素工厂、Industrial Annihilation、粒子舰队、战线等作品冒着创新风险的勇敢尝试,都在不断为即时战略这一类型寻找新的希望,历史应该记住他们。<sup data-text="“即时战略游戏的未来”" data-url="https://en.wikipedia.org/wiki/Real-time_strategy#cite_note-gama_toronto-52" data-draft-node="inline" data-draft-type="reference" data-numero="26">[26]</sup> ### 4.传统型即时战略 顾名思义,是即时战略这一定义的起源,诞生于30年前的沙丘2<sup data-text="PC 上即时策略游戏的起源" data-url="https://web.archive.org/web/20030504034920/http://www.above-the-garage.com/rblts/vie16b.htm" data-draft-node="inline" data-draft-type="reference" data-numero="27">[27]</sup><sup data-text="策略游戏 入门知识" data-url="https://web.archive.org/web/20100810204341/http://archive.gamespy.com/articles/february02/strategy1/" data-draft-node="inline" data-draft-type="reference" data-numero="28">[28]</sup>,专注于构建大兵团对战的爽度和视觉效果,拥有低难度运营流程和高兵种通用性的特征,代表作有帝国时代2、命令与征服、地球帝国2、轴心国与同盟国、红色警戒2、国家的崛起。该类型有着早期策略游戏设计深度不足却又想囊括万物的缺点,所以在难度方面普遍存在强度失衡情况,玩家社区对此戏称为可以憋憋乐和一波推的兵海游戏。传统型RTS在早期成功的主要原因普遍被认为是音画表现带来的强烈视听冲击力而不是优秀的策略性,这也是早期RTS会以“更大的规模”“精美的画面”为买点的主要原因,<sup data-text="“建造、聚集、争斗、重复:即时战略游戏的历史”" data-url="https://arstechnica.com/gaming/2017/09/build-gather-brawl-repeat-the-history-of-real-time-strategy-games/" data-draft-node="inline" data-draft-type="reference" data-numero="29">[29]</sup>回顾上文中动作型RTS的电竞历史,不难发现曾经即时战略走向大众的真正内核是什么,也便不难梳理出现在“落寞”的真正原因了。 由于目前游戏领域细分已经十分专业化,故若以现在的眼光看待传统型RTS,不难看出其中杂糅了城市建设类、策略模拟类、即时战术类等众多风格或节奏完全不统一的玩法,这也是后来即时战略玩法进行三向细分的根本原因;另一方面,所有内容都有一点,却在多数方面都缺乏深度,几乎是传统型RTS的通病,也是导致其逐渐小众的次要原因,<sup data-text="《RTS设计》" data-url="https://web.archive.org/web/20070927142342/http://www.dunniwaydesign.com/rts_design.htm" data-draft-node="inline" data-draft-type="reference" data-numero="30">[30]</sup>毕竟,决定一个产品能否存活的关键不是优点,而是特点。 ![](https://picx.zhimg.com/v2-f8b555b62b25b77ee77305046ba7abef_720w.jpg?source=b1748391?rss) 由于传统型RTS在游戏性上已经被其他三种细分类型瓜分,故该类型的介绍无需太多笔墨,在最后以对比的形式总结梳理一下四大类型RTS的优缺点,以便于大家更好的进行理解。 内容广度:战略型>传统型>战术型>动作型 策略深度:战略型>战术型>传统型>动作型 在系统复杂度上,虽然有部分轻量级战略型RTS在内容广度上逊于传统型RTS,但以类型整体进行对比,战略型RTS仍是当仁不让的第一,即使已经删除战术层面的多数微观内容,其宏观战略的体量仍旧惊人;战术/动作型RTS则至简而行,让玩家能全身心投入到战斗中,思考战术布局/大量细节微操,而传统型RTS突出一个杂而不精,就像红警2的结盟功能,相信多数玩家从来都没用过,坦克杀手与恐怖分子等阵营特殊单位、也是既缺乏游戏性也缺乏趣味性,这类鸡肋的内容是传统型RTS的重要缺点,有着时代的局限性。 上手难度:动作型=战略型>战术型>传统型 动作型RTS的微操作需要大量的时间进行练习,棱镜接白球/不朽、人族Sky一波流、盟军维和分弹和冷冻连缩甚至需要形成肌肉记忆,连基地建设的时间都要卡死时间点才有最大化收益,上手难度之高不言而喻;而战略型RTS则因内容量过多,且每一方面的玩法都值得深挖,导致大量玩家完全无所适从,早期游玩时甚至连失败的原因都不清不楚;此时,传统型RTS的深度不足反而在新人上手方面体现出了优势,学会憋强力/万金油单位就能快速感受到乐趣。 可重玩性:战略型>动作型>战术型>传统型 战略型RTS的内容广度与策略深度,往往能够让玩家带有明确目的进行重玩;动作型RTS随着肌肉记忆的养成,运营成功与微操收益的提升十分直观,阶段性成长乐趣浓厚,这一过程就会提供不错的重玩性;相比之下后两种类型的游戏重玩体验极其依赖对手行为,想要设计出匹配任何玩家实力的PVE Ai和高度精准PVP匹配系统都是游戏设计上非常困难的课题,考虑到业内至今仍未有一个非常优秀的解决方案,我做出了这样的排行,其中传统型的问题解决难度超过了战术型。 成型爽度:传统型>战略型>动作型>战术型 不得不承认,不论是地球帝国中遮天蔽日的空中压制、还是轴心国与同盟国里钢铁洪流的浩浩荡荡,都有着非常优秀的爽感,加上策略深度有限,手握终极单位的你大可无脑进攻,**憋憋乐和一波推就是传统型RTS的浪漫所在**,当然,这也令其沦为了纯粹的“兵海爽游”即使是后来动作型RTS衍生出去的Moba游戏,都比其更有深度。相比之下战略型RTS的养成难度更高,需要解决工业、人口、建筑学等概念,所以比简单粗暴的传统型RTS略逊一筹,不过成型之后因其自主化程度较高,体验其实并不输传统型RTS。动作型/战术型RTS在这方面完全不是对手,前者即使大军压境也往往需要高频甩枪拉扯,不然输出无法最大化;后者则是因复杂的兵种克制,即使是优势时的一波鲁莽进攻,也可能会导致死伤大半。 内容观赏性:动作型>战术型=传统型>战略型 动作型RTS,电子竞技的开山鼻祖,赏心悦目的多线微操如同指尖舞蹈,尽管是专注服务于顶层玩家的游戏,设计改动只以职业赛事为参考,却不能忽视其伟大的历史贡献。战术型RTS与战略型RTS有着相同的问题,那就是看不懂!对于观众来说,前者的克制关系是一种很抽象的机制,在视觉上被接受需要时间;而后者更多的是互相影响的各种系统,就像纪元1800的经济模型建立在宏观经济学中,这让理解成本过高导致观看门槛过高,爽感反馈更弱。相对来说,传统型RTS的兵海互推更好理解,却也更容易视觉疲劳,不论是策略上还是操作上,都缺少紧张刺激的博弈对抗。 ## 总结: ![](https://picx.zhimg.com/v2-73e361ab66001c81bc4c403d74c7de66_720w.jpg?source=b1748391?rss) 目前,这四种分类已经能够帮助绝大多数玩家进行筛选:[Steam上有哪些优秀的RTS游戏?](https://www.zhihu.com/question/552730949/answer/3287660269) 喜欢慢节奏种田养国的玩家去以赛事为核心的动作型RTS中就是会因操作而吃上大亏,不如试试战略型RTS中的王国与城堡、亿万僵尸、中世纪王国战争等轻量级作品,学习成本低便于入门; 喜欢精美画面和视觉冲击的玩家去战略型RTS中就是会昏昏欲睡,不如看看动作型RTS里的星际争霸2和地狱之门,前者的精美赛事能让你大饱眼福并明确目标、后者的第一人称微操更具代入感; 喜欢战术布局和奇谋诡术的玩家去动作型RTS中就是会束手束脚,不如考虑一下战术型RTS中的经典佳作英雄连1,若感不够施展你的战术思维,再跳跃到终极将军内战挑战真人一样思考的Ai; 最后,喜欢难度偏低,兵海爽推作品的玩家,也许应该看看老一代RTS作品或是老一代RTS开发商的续作,比如原红警团队的8位军团或传承其思想的铁锈战争、Five Nations、新月沃土等作品; 总之,作为游戏玩家,我们应该做好筛选,用钱投票自己喜欢的类型,而不是去自己讨厌的类型中攻击其他玩家,动作型RTS与其他类型RTS的冲突真的该结束了,这种互开即时战略户籍的对骂并不会产生什么积极的影响,反而会让开发商们不敢承受创新和公关的风险,逃离这个品类,最终破坏我们RTS的未来。 ### 先到此为止吧: 我会在未来几个月时间里持续完善这篇文章,希望大家也能够在评论区提出意见或建议,以帮助到更多即时战略的玩家们 —— 重铸RTS荣光,吾辈义不容辞! 来源:知乎 www.zhihu.com 作者:[轻声低语](http://www.zhihu.com/people/Qswhisper?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=author) 【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 [点击下载](http://daily.zhihu.com?utm_source=rssyanwenzi&amp;utm_campaign=tuijian&amp;utm_medium=rssnormal)此问题还有 [1558 个回答,查看全部。](http://www.zhihu.com/question/36160228/answer/3267149436?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) 延伸阅读:[你对即时战略游戏有什么见解?](http://www.zhihu.com/question/502919176?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) [如何看待即时战略游戏?](http://www.zhihu.com/question/369415726?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title)

2024-09-29 02:50:08 · 1次阅读
 
 
游戏的系列作品,下一作应该如何削弱前作中玩家已经养成的“战神”级角色?

知乎游戏区的好问题!拿近期大火的《黑神话·悟空》为例。 齐天大圣本体明显太强了,你如果设计成敲谁谁死,那游戏肯定没意思。 你如果设计成从1级开始游戏,那玩家肯定又不干“我们的大圣才没那么弱鸡。” ![](https://picx.zhimg.com/v2-fb755785b624521741cf539391438ef7_720w.jpg?source=b1748391?rss) 所以,游戏科学将大圣想办法分成了好几份,需要3周目都真结局,才能发挥出真大圣的威力。 ![](https://picx.zhimg.com/v2-31739666ea893e00249ffa638d45613c_720w.jpg?source=b1748391?rss) 从装备碎片,到大圣碎片,做成了拼图的形式。非常有创意。 那么其他游戏又是怎么做的呢?让我们娓娓道来。 ## **《塞尔达传说:旷野之息》→《王国之泪》** 经历了120个神庙的试炼,拔取大师之剑,斩杀盖侬,营救公主。 在《旷野之息》中,林克已经从“失忆”的Debuff中恢复到了勇者时的状态。成为了一名身经百战的战士。如果以这种形态来游玩《王国之泪》,显然很多前期敌人就变得没有必要了。 然而《旷野之息》到《王国之泪》的故事本身还是有所关联的。 那么如何解决“林克太强”这个问题呢? ![](https://picx.zhimg.com/v2-f32a084f452fe97c8ef2ee112357f9ca_720w.jpg?source=b1748391?rss) 那就是让林克与塞尔达开局探索地下世界的时候,让邪恶力量将林克的力量完全腐化。 ![](https://pic1.zhimg.com/v2-d7d32f2f26137cfd0fe09a1f7ae29b24_720w.jpg?source=b1748391?rss) 这股邪恶力量不仅摧毁了林克的额外生命,还毁坏了大师之剑和林克的一条手臂。 ![](https://picx.zhimg.com/v2-c4103a74b74f184dbe2b87b30feaa173_720w.jpg?source=b1748391?rss) 只有这样,才能将新的“究极手”移植给林克,并让其“重新成长”,获取新作的能力。 ![](https://pic1.zhimg.com/v2-faad1a30ecb9f090fa216b6edbf2ae99_720w.jpg?source=b1748391?rss) 虽然只是一个简单的转场,但任天堂削弱主角的手法,还真是与故事紧密结合,并且花了不少心思。 ## **《空之轨迹》系列,或者说《轨迹》系列** 作为通常以2~4部讲述一个故事的大长篇,任务动辄上百级的游戏,如何处理好新作与前作的衔接,就变得非常重要。我本人只玩过“空零碧”5部轨迹系列的游戏,但对Falcom如何处理的,却是颇有了解。 ![](https://pic1.zhimg.com/v2-4faad6074f3ccd805c163776ebfbab15_720w.jpg?source=b1748391?rss) 轨迹系列每开发一部新作品,财团部分就会制作出新的“导力器”。导力器是轨迹系列释放“导力魔法”的重要道具,由于老旧的结晶回路不能与新的导力器兼容,所以前作积累的回路也不能装在新的导力器上。 ![](https://pic1.zhimg.com/v2-099e41a398b516f3da802f415348796f_720w.jpg?source=b1748391?rss) 然而,较真的玩家会发现,虽然在终局时,新的导力器的确可以配置出许多前作无法配置出的终极魔法,导力孔也从六个升级了为七个。 ![](https://pica.zhimg.com/v2-a1e50642c06c5cfd2bf888cc362f0ab0_720w.jpg?source=b1748391?rss) 但导力回路的强度,还是FC的要比SC的强很多,比如FC版本的攻击3就有15%的物理伤害提升了。而到了SC中,能手动打造的最强回路攻击4也远没到这个程度。 如果游击士都很有战斗经验,仅凭游击士手册,也会选择混用新旧导力器来提升作战效率,直到新的导力器功能完全超过老的导力器为止,再来使用新导力器。 ![](https://picx.zhimg.com/v2-5c437796a52f22c2d1c9735be2ee04a5_720w.jpg?source=b1748391?rss) 轨迹系列更有趣的一点,是在轨迹新作中,总会对前作人物的已获得的技能进行惨无人道的削弱。比如罗伊德的招牌技能燃烧之心,在零之轨迹中可以持续5回合,而在碧之轨迹中只能持续3回合。 ![](https://picx.zhimg.com/v2-852870e0873b9c587c0b4e4bee1849e2_720w.jpg?source=b1748391?rss) 而此技能在效果消失时会晕厥1回合。在原版本中可以自由行动4回合后,再续一轮“燃烧之心”避免晕厥,但新作中,这种套路则完全不可行了。 对于其它的一些技能,甚至会变成即便升级为“真·XX”也是削弱版本,不如原版等状况。 ![](https://pic1.zhimg.com/v2-7c7bd096ee0a0506d8f4e650a7101140_720w.jpg?source=b1748391?rss) 例如《碧之轨迹》中艾莉神圣子弹增加20CP消耗的设计,使得《零之轨迹》中的神技,在《碧之轨迹》中几乎失去了效果。 ![](https://picx.zhimg.com/v2-441ca9e28a1cc85258eb1ff6d87a9c5d_720w.jpg?source=b1748391?rss) 可以说,轨迹系列对于人物的明涨暗削的确在剧情上做到了“合理化”,而后续加入的诸多新功能,也一定程度上掩盖了对于角色的削弱。但在剧情和实际战斗结合的层面上,难免给玩家一种,角色看起来变强了,实际上只是在不断原地踏步的观感。 ![](https://picx.zhimg.com/v2-4d412c16472f6a1b398310b13168a62b_720w.jpg?source=b1748391?rss) 而谈起Falcom的系列作品,万年主角红发色魔亚特鲁也很有趣,因为他在一个地区搜索了一堆秘宝,掌握了风火地等战斗能力后。在下一作,还是会在海滩失忆苏醒,醒来之后,连铠甲都变回1级了。 ![](https://picx.zhimg.com/v2-c536b52493c86d046a890e79a0ae0483_720w.jpg?source=b1748391?rss) 话说,冒险家真的要把获得的所有宝物都物归原主,才能展现自己高洁的品质吗? ## **《战神4》→《战神5》** 如果说《战神3》到《战神4》,奎托斯的能力大幅度削弱,是因为他已经完成复仇,放下屠刀,开始重视起自己的儿子与家庭了,那《战神4》到《战神5》他将上一代积攒起的铠甲和强化过的兵器都还原了,真是令人忍俊不禁。 ![](https://picx.zhimg.com/v2-1385bc1a7458c15f123830d1847b7ebd_720w.jpg?source=b1748391?rss) 明明在开场还在强调,儿子要努力锻炼,以应对未来的战争。而自己和儿子却把所有的装备全给丢了…… ![](https://picx.zhimg.com/v2-1c965d5ca7498dbff340151e3ef67399_720w.jpg?source=b1748391?rss) 这套神操作,给铁匠布罗克都整无语了。“老子费那么大劲儿打得胸铠和护肩甲,说‘用了’就用完了?” ![](https://picx.zhimg.com/v2-970450bec61c9f31a2e62ac388342e94_720w.jpg?source=b1748391?rss) 好歹在五代之中,奎托斯并没有将自己的链刃——放逐之刃重新埋起来,不然再半场游戏智能用一把斧子,真的会让人抓狂。 ![](https://pic1.zhimg.com/v2-49c906b81e797535f483b8b56521c0ed_720w.jpg?source=b1748391?rss) 不过,如果说在5代中两人都没有成长,那也是不对的。因为在《战神5》中除了开场就能用放逐之刃,奎托斯的斧子也能在开局就附魔冰霜,冰与火的交替攻击,使游戏前期的战斗更富有趣味性。 ![](https://picx.zhimg.com/v2-3e4de3d469e7b81af58c4afc0cdb41f8_720w.jpg?source=b1748391?rss) 而在5代中,爬墙时,儿子也终于不再用奎托斯进行托举,且在未升级的情况下就能用体术勒住敌人了,两人合作击杀怪物也愈发顺手。在这些年中,奎托斯也学会了一些简单的文字。 ![](https://pic1.zhimg.com/v2-07bada4f6264857cc397c5faadf09045_720w.jpg?source=b1748391?rss) 剧情中,这些细腻的人物成长,也讲述着时间给父子之间带来的变化。只不过,前代一些升级后早已学会的能力,在5代里还要重新升级学习。 可能时间真的会让人遗忘一些不常用的技能吧? ## **《女神异闻录3Reload》→《DLC》** 不敢想象,同一款游戏中,DLC的人物等级会断崖式下降。本来从1级萌新成长为满级大佬,拯救世界的伙伴们,仅仅过了4个月,就全员回到了二十几级的水准。 ![](https://pic1.zhimg.com/v2-26139e06ec71803b9fd6686a13be708a_720w.jpg?source=b1748391?rss) 甚至被一个外来者拿个铁锤几乎就打成团灭。 ![](https://pic1.zhimg.com/v2-74f4145b709fc315b399ead81375c64f_720w.jpg?source=b1748391?rss) 可以说P3R主角团的战斗实力,在我看来就像是参加高考的高中生的知识储备和读了大学毕业三年后的状态一样。虽然还是一个人,但那差距实在是不可同日而语了。 ![](https://picx.zhimg.com/v2-6c3d99a24762107aa98fe8698a965600_720w.jpg?source=b1748391?rss) 而封印装备,降低能力,不让用P的原因,就是让玩家再来一次沉浸式爬塔,只能说Atlus,你真的是太懂了!知道《女神异闻录》系列,这么吸引玩家的原因,就是战斗特别好玩,和Coop、日常剧情等完全无关。 ![](https://picx.zhimg.com/v2-df387d70b8c382c8d2b9b75000562ba2_720w.jpg?source=b1748391?rss) 而最让我难受的是,成为了寻找牢李主角的埃葵斯,失去了自身狂暴化的标志型神通技,自己变成了另外一个可以操作多个P的牢李二号。 ![](https://pic1.zhimg.com/v2-9ecec42c2f8269ed6be686885d6acf93_720w.jpg?source=b1748391?rss) 自己的这套能力,则给了善使大锤的锤子女。 在这许多削弱主角的游戏中,《P3R》可能是我见过的抽象之最了。 将本体的一切重来一遍的没苦硬吃,何尝又不是一种没活硬整呢? ![](https://picx.zhimg.com/v2-498135d8e4dbfd9f0c999c27d7b706e2_720w.jpg?source=b1748391?rss) 好在全新设计的UI界面,还是蛮好看的。 ## **《封印之剑》→《烈火之剑》** 看,这个大胡子男人叫做海克托尔,在游戏开局就面对一群龙骑士战死于城堡之中。 火纹这种开局死国王的设计,就算在当时来看,也算是斯通见惯了。 ![](https://picx.zhimg.com/v2-0e467e17af9db234e9d53a85b40fb3d9_720w.jpg?source=b1748391?rss) 但到了下一作《烈火之剑》也就是《封印之剑》的前传,那个全队伍里的唯一重甲猛男,又成为了多少人的意难平? 在“火焰之纹章”中,剑克斧,斧克枪,枪克剑,有着这样石头剪刀布一样的克制关系,但在《封印之剑》与《烈火之剑》的游戏系统里,使用斧子都为轻甲或无甲的山贼,剑类武器则是三系武器中,速度快攻击力低的代表。 ![](https://picx.zhimg.com/v2-ff226f9cfc5f88f9480237e825c94f78_720w.jpg?source=b1748391?rss) 重甲类角色,例如将军、圣骑,也通常是主枪、副剑。 而海克托尔是个例外,他用着三系武器中攻击力最高的斧类,身上的铠甲却是重甲。攻防一体,加上极高的成长值,使海克托尔几乎可以无视克制,一路劈砍过去。 而昔日的重甲猛男,也抵御不了时间的摧残(编剧的削弱),在《封印之剑》开局便早早下场。若是昔日的海克托尔仍在,三把钢斧(有磨损)便足以荡平所有侵入者,哪还有后续的故事什么事儿呢? 剧情杀什么的最讨厌了! **结语:**自古文长没人看,本期是有感而发,就将近期发布的几款游戏和老游戏都拿出来说说,如果你也有这个话题中,自己感兴趣的,觉得设计很好的游戏,欢迎在评论区讨论呀! 来源:知乎 www.zhihu.com 作者:[无月白熊](http://www.zhihu.com/people/wu-yue-bai-xiong?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=author) 【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 [点击下载](http://daily.zhihu.com?utm_source=rssyanwenzi&amp;utm_campaign=tuijian&amp;utm_medium=rssnormal)此问题还有 [108 个回答,查看全部。](http://www.zhihu.com/question/667962011/answer/3633824129?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) 延伸阅读:[没有弱的角色,只有弱的玩家真的适用于所有游戏吗?](http://www.zhihu.com/question/598530920?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) [游戏《巅峰战舰》的核心玩法是什么?](http://www.zhihu.com/question/653034462?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title)

2024-09-27 04:24:11 · 2次阅读
 
 
本地部署 Minikube + Docker 记录

我有Mac和Windows,这些年折腾软件方面的环境Linux用得比较多,最近想安装一个Kubernetes的本地环境,本着“生命不息,折腾不止”的精神,打算在Windows上动手。了解到可以尝试Minikube,在此简单记录一下。 <!-- /wp:paragraph --><!-- wp:paragraph --> 首先得要安装Docker,但是在Windows下跑Docker有两种方式,WSL(Windows Subsystem for Linux)或者Hyper-V。我首先把这些Windows组件都勾上: <!-- /wp:paragraph --><!-- wp:image {"id":7725,"sizeSlug":"full","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/09/image-8.png) <!-- /wp:image --><!-- wp:paragraph --> 我两条路都去走了一下,为了使用Hyper-V,我还去BIOS里面打开虚拟化支持的选项。不过,后来才知道,因为操作系统版本是Windows 10 Home,虽说Windows上面跑docker有两种方式: <!-- /wp:paragraph --><!-- wp:list --> - 一种是使用WSL - 另一种是使用 Hyper-V <!-- /wp:list --><!-- wp:paragraph --> 但在Windows 10 Home版本上只支持第一种。由于Hyper-V本质上是额外的虚拟机,而[WSL](https://learn.microsoft.com/en-us/windows/wsl/about)更新,是虚拟化的Linux环境,是Windows操作系统原生支持的,性能要好一些。 <!-- /wp:paragraph --><!-- wp:paragraph --> 其实,在Docker的设置里面也有说了: <!-- /wp:paragraph --><!-- wp:image {"id":7726,"sizeSlug":"full","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/09/image-10.png) <!-- /wp:image --><!-- wp:paragraph --> 可以列出所有WSL(我使用的[WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install))目前支持的Linux Distributions: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>wsl --list --online</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 可以选一两个自己熟悉的安装了体验一下: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>wsl --install Ubuntu wsl --install Debian</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 整个Windows的文件系统都可以以Linux的方式访问。以往我一般在Windows上运行Linux命令都是使用Cygwin的,但是现在我了解到两者很不相同,WSL是真正的虚拟化Linux环境,而Cygwin只不过把一些Linux命令编译成Windows的二进制版本。 <!-- /wp:paragraph --><!-- wp:paragraph --> [安装Minikube](https://minikube.sigs.k8s.io/docs/start/?arch=%2Fwindows%2Fx86-64%2Fstable%2F.exe+download)和相关工具,配置环境变量。这次学到了可以用[Chocolatey](https://chocolatey.org/),它是Windows下的软件安装工具。比如: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>choco install kubernetes-cli</code></pre> <!-- /wp:code --><!-- wp:paragraph --> Minikube可以以VM、container,甚至bare metal(Windows下不支持)的方式来运行,通过[driver参数](https://minikube.sigs.k8s.io/docs/drivers/)指定。 <!-- /wp:paragraph --><!-- wp:paragraph --> 我们使用docker,这也是官方认定preferred的一种方式。这种方式下,Minikube应用本身会作为Docker container跑在Docker里面(driver的含义),同时,Minikube也会使用Docker来跑其它的应用container。 <!-- /wp:paragraph --><!-- wp:code --> <pre><code>minikube config set driver docker<br/>minikube delete<br/>minikube start --driver=docker</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 看一下状态: <!-- /wp:paragraph --><!-- wp:paragraph --> Done! kubectl is now configured to use &#34;minikube&#34; cluster and &#34;default&#34; namespace by default <!-- /wp:paragraph --><!-- wp:paragraph --> 看一下状态: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>minikube status type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 此外,检查一下WSL已经安装的Linux subsystem,能看到: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>wsl -l<br/>Windows Subsystem for Linux Distributions:<br/>Ubuntu (Default)<br/>docker-desktop<br/>Debian</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 在Docker的UI上,也能看到: <!-- /wp:paragraph --><!-- wp:image {"id":7727,"sizeSlug":"large","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/09/image-11-1024x52.png) <!-- /wp:image --><!-- wp:paragraph --> 跑起来以后,用[kubectl](https://kubernetes.io/docs/reference/kubectl/generated/kubectl/)验证一下: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>kubectl cluster-info Kubernetes control plane is running at https://127.0.0.1:57514</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 查看所有namespace: <!-- /wp:paragraph --><!-- wp:paragraph --> kubectl get pods --all-namespaces <!-- /wp:paragraph --><!-- wp:paragraph --> 启动dashboard: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>minikube dashboard</code></pre> <!-- /wp:code --><!-- wp:image {"id":7729,"sizeSlug":"full","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/09/image-13.png) <!-- /wp:image --><!-- wp:paragraph --> 接着,创建和部署一个hello minikube的service: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0 kubectl expose deployment hello-minikube --type=NodePort --port=8080 kubectl get services hello-minikube</code></pre> <!-- /wp:code --><!-- wp:image {"id":7730,"sizeSlug":"full","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/09/image-14.png) <!-- /wp:image --><!-- wp:paragraph --> 通过访问: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>minikube addons list</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 可以列出一堆可以立即安装的addon,有一些是K8s的,有一些是minikube的,比如: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>minikube addons enable auto-pause</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 这个可以在一段时间没有使用的情况下,暂停K8s。 <!-- /wp:paragraph --><!-- wp:paragraph --> 还有一个addon能让dashboard的metrics显示更多信息: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>minikube addons enable metrics-server</code></pre> <!-- /wp:code --><!-- wp:paragraph --> 后来,一通折腾以后发现,原来Docker的settings里面已经有了一个Kubernetes选项: <!-- /wp:paragraph --><!-- wp:image {"id":7728,"sizeSlug":"full","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/09/image-12.png) <!-- /wp:image --><!-- wp:paragraph --> 原来新版本的Docker里面[自带了一套K8s](https://docs.docker.com/desktop/kubernetes/),它是完全跑在Docker instance里面,并且无法配置的,主要用于本地测试。它的运行也是基于WSL。 <!-- /wp:paragraph --><!-- wp:paragraph --> 现在就试一下,停掉Minikube: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>minikube stop</code></pre> <!-- /wp:code --><!-- wp:paragraph --> UI确认确实停了(或者docker ps): <!-- /wp:paragraph --><!-- wp:image {"id":7732,"sizeSlug":"full","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/10/image.png) <!-- /wp:image --><!-- wp:paragraph --> 然后把Docker的Kubernetes tab上面的两个选项都勾上,apply &amp; restart。 <!-- /wp:paragraph --><!-- wp:image {"id":7733,"sizeSlug":"full","linkDestination":"none"} --> ![](https://www.raychase.net/wp-content/uploads/2024/10/image-1.png) <!-- /wp:image --><!-- wp:paragraph --> 不过等了好久,似乎卡在这一步了,我reset并且更新Docker以后,问题解决。打开以后我看到Docker启动了一堆container。确认跑起来也没问题: <!-- /wp:paragraph --><!-- wp:code --> <pre><code>kubectl get nodes<br/>NAME STATUS ROLES AGE VERSION<br/>docker-desktop Ready control-plane 10m v1.30.2</code></pre> <!-- /wp:code --><!-- wp:paragraph --> <!-- /wp:paragraph -->

2024-09-26 22:52:08 · 3次阅读
 
 
游戏《冰汽时代2》中的“暖券”是什么?在现实中有类似的通货么?

终于写完了,6000 字长文解读游戏中的「暖券」设定。 ## 《冰汽时代2》游戏中的「暖券」 直接看游戏中给的标准答案吧:**暖券是城市中使用的货币。它最初只是用于兑换固定热能的票证,后来才发展成为通用的交换手段**。 ![](https://picx.zhimg.com/v2-9ace9d3ca02a4167f3e3cf1c3b50710c_720w.jpg?source=b1748391?rss) 「暖券」这个概念在 Frostpunk 一代中还没有出现(冰汽时代 1 中只有资源,没有货币),到二代中暖券就已经成为了事实上的货币。所以如果仅考虑 Frostpunk 2 游戏的话,直接简单理解:**暖券 = 钱**。不妨再看一下游戏中对暖券的详细介绍: ![](https://pica.zhimg.com/v2-75055a618596dea267f5611ee14afa43_720w.jpg?source=b1748391?rss) <blockquote>暖券是一种储备资源,用于破霜、资助建设以采取特定行动。 <br/><b>城市会每周收集暖券</b>——每个社区会基于其规模贡献份额;社区规模越大,贡献的暖券就越多。这就意味着随着人口的增长,暖券收入也会增加。 <br/>暖券收入<b>可通过满足商品需求增加</b>。还可以通过某些法律和建筑增加。 <br/>你可以向社区和派系索取或捐赠暖券。</blockquote> 很明显,在游戏中,**暖券的实际运行主要是自下而上地贡献缴纳,而没有过多体现如何自上而下地供给配发**。很简单,如果暖券是执政官印的,那玩家怎么还会缺钱。(对于无限制印钱的暴论 hhh) ![](https://picx.zhimg.com/v2-dc81ceff23f1b28eee4ffef87217f3a1_720w.jpg?source=b1748391?rss) - 收入方式:社区的贡献 = 人头税,满足商品需求 = 消费税(这里其实并不严谨,因为实际上是当商品需求不被满足时,倒扣暖券;相当于满足商品需求来增加暖券),特殊法律(卖酒),建筑(基于绩效的住房),索取 = 直接要钱。 - 消耗方式:破霜、建设或特定行动,一些法案政策会减少收入,比如开展义务教育,提供工人村住房等。 因此,直接把暖券理解成钱没有任何问题。**暖券事实上就是一种【定期按社区人口收取】、【在执行破霜任务 / 开展建设 / 颁布政策时花费】的货币**。 如果简单理解的话,暖券和其他游戏里的任何一种货币一样,就是个「钱」的符号概念,这样的简化理解不会对你玩游戏造成什么困扰。 如果你只想知道游戏中的如何获取暖券,可以参见: [游戏《冰汽时代2》中如何增加暖券收入?](https://www.zhihu.com/question/667801575/answer/3633515409) 后面写了几千字又臭又长,可以不读:) - - - 如果你决定继续看,那我们一起来讨论一下,冰汽时代这个「社会实验游戏」中的货币设定。 ## 思考 1:制作组为什么要在游戏中加入「货币」? 其实在常见模拟经营游戏中,货币都是核心数值。毕竟我们在现实生活中已经形成了丰富完善的货币体系和商业体系。 在游戏中加入「货币」至少可以起到以下作用: - 从概念上,会丰富完善背景故事的设定,比如现在就引起了我们的讨论。 - 从玩法上,货币实际上起到一种资源数值的限制作用,在游戏前期会很非常缺暖券,简单粗暴地限制了玩家发展速度,延长了游戏寿命,当然这涉及到具体的数值设计。说白了就是制作组的恶意,通过增加一种资源平衡来提升游戏难度和资源限制的。 ## 思考 2:为什么制作组不直接做成「钱」,而要做「暖券」呢? 冰汽时代最核心的元设定就是「火山喷发和大暴风雪导致整个世界被冰雪覆盖」的末日背景,在末日事件的早期,既然都已经世界末日了,大家每天挣扎在生死线上,要钱有什么用? 在寒冰末日的设定下,钱无法直接提供/换取生存所需的核心资源,社会也不再需要抽象的财富概念,财富也没有了信用锚定,而**这时最稀缺资源的就是热能**。 如果你是制作组,想要加入一种取代「钱」的货币概念,自然能想到「兑换热能的票证」。毕竟热能是寒冰末日里能取代金子的锚定物。 但是呢,我个人感觉制作组只是想当然地使用了冰汽末日最硬的「热能 / 暖」这个概念,有没有做非常丰富具体的设定。 至少我在游戏中只找到了部分「暖券」的说明文本,而没有在剧情里体现特别多。我也搜了一下豪华版游戏附带的小说_ Warm Flesh_,里面根本就没有「暖券」这个词。所以我合理怀疑制作组就是拿了这么个概念作为货币,而没有专门去想很深的设定。 ## 思考 3:「暖券」作为货币,合理吗? 我觉得有一定道理,但制作组考虑的并不充分全面。 热能来自于哪里?玩过游戏的都知道,**游戏中的热能几乎全部来自于中心区的能量塔**,而转换热能的资源(煤炭、石油、蒸汽)都不是普通人可以采集或自用的。所以可以理解为,**控制能量塔的人就控制了城市中的所有热能**。 从这个角度理解,热能似乎可以作为锚定货币的资源。从货币角度分析,暖券满足了以下功能: - **交换媒介**:货币应当被广泛接受,用于购买商品和服务。在寒冰末日的环境下,热能是人类生存的关键资源,所有人都需要,因此「暖券」可以被广泛接受作为交换媒介。 - **价值储藏**:货币应能保存价值,供未来使用。由于「暖券」代表着获取热能的权利,而热能需求在这个环境下是持续的,所以「暖券」可以有效地储存价值。 - **记账单位**:货币应能用来衡量和比较商品和服务的价值。在「暖券」成为通用交换手段后,商品和服务的价格可以以「暖券」计价。 - **延迟支付的标准**:货币应能用于未来的支付和债务结算。「暖券」作为稳定的价值载体,可以用于延迟支付。 但是,这里其实还漏了一些设定,毕竟游戏里的热能供应并不规律,会有供热不足和供热充裕的时候。如果把暖券作为货币,就难免会涉及到币值购买力的波动,会不会因为热能波动、商品供应带来通胀/通缩,这些都是游戏里没有体现的。 所以我们接下来讨论「暖券的演化」和「如何设定并解释暖券的价值恒定」。 ## 思考 4:「暖券」的演变历程是什么? 游戏中说了:**「暖券」最初只是用于兑换固定热能的票证,后来才发展成为通用的交换手段**。 我们不妨尝试来补全一下「暖券」的历史,看它如何从一种**【初期用于供热计划配给的票券】**到**【逐渐发展为通货】**,**【最后事实上演变为货币】。** 暖券的英文是 heat stamps,顾名思义就是**关于热力调配的盖章生效的票券**。如果这样以字面去理解,大多数人的第一反应都会是参照「粮票」,也就是在计划经济下对短缺资源的一种分配工具。 我在 11 bit studios 的 Discord 艺术频道找到了这么一张报纸<sup data-text="" data-url="https://discord.com/channels/399667662625701893/399673067342659584/1250391445639270470" data-draft-node="inline" data-draft-type="reference" data-numero="1">[1]</sup><sup data-text="" data-url="https://cdn.discordapp.com/attachments/399673067342659584/1250391445110525994/The_Smokestack_Daily_No_1851.jpg" data-draft-node="inline" data-draft-type="reference" data-numero="2">[2]</sup>。虽然 11 bit studios 经常会在宣传上搞一些这样的花活,但我觉得这更像是粉丝创作,因为官方并没有正式发布过这篇,我们还是拿来作为参考设定。 这张报纸的头版头条就是「引入暖券:一种新的调控供热的方式」。 ![](https://picx.zhimg.com/v2-cf1b44efe9a96668eb37e5fa4bfc0687_720w.jpg?source=b1748391?rss) 诶,在这里就需要先补全一下 Frostpunk 1 和 2 设定的大概时间: <blockquote>Frostpunk 1 背景设定在 19 世纪。1870 年代后,地球由于彗星群的影响而气温逐渐降低,世界各国因此开始发展基于煤炭供热的能量塔技术。1880 年代中期,火山喷发和大暴风雪导致整个世界被冰雪覆盖,日常气温已经低至零下30摄氏度,人类几近灭绝。游戏第一章《新家》的剧情就始于 1886年,一群从伦敦逃离的幸存者来到了英国北部,建立起人类最后一座城市——新伦敦(New London)<sup data-text="" data-url="https://zh.moegirl.org.cn/zh/%E5%86%B0%E6%B1%BD%E6%97%B6%E4%BB%A3" data-draft-node="inline" data-draft-type="reference" data-numero="3">[3]</sup><br/>Frostpunk 2 的背景设定在前作 30 年后,<b>1916 年的新伦敦。石油产业已经出现,这座城市的新领导者「执政官」,取代了去世的「首领」。</b><sup data-text="" data-url="https://zh.wikipedia.org/wiki/%E5%86%B0%E6%B1%BD%E6%97%B6%E4%BB%A32" data-draft-node="inline" data-draft-type="reference" data-numero="4">[4]</sup></blockquote> 知道了两作的时间线后,我们注意这份报纸的时间——1894 年,属于 Frostpunk 一代的世界观(也就是《新家》剧情建立新伦敦后),作为对历史设定的补全。 我摘报纸里的关键段落翻译一下: - 1894年8月15日,极星市宣布了一种新的城市供热调控方式: - **通过工作,每天得到定额的暖券**; - 住宅区不再全天候提供所有热量(工作区不受影响); - 一张暖券兑换一个半小时的供热,如果需要更多的热量,可以额外兑换暖券增加分配的热量; - 采掘工作场所将开始提供至少 16 张暖券/天,其余场所视重要性增减暖券; - 公众表达了对于暖券的担忧,认为没有充分考虑弱势群体; - 也有人开始讨论暖券可能带来的机会,比如**通过生产合适的商品获得报酬**。 这些设定基本都能吻合末日背景下稀缺资源的计划式管理。 同时,需要注意的是,**在游戏中并不是所有地区都有暖券**。比如我们在序章中玩到的【飘零客】团体,使用的通货就是「废料」: <blockquote>废料是具有情感价值或实用价值的小物件。可用于交易或物物交换。<br/>随着人口的增加,以物易物的行为越发频繁,因此废料也更加常见。</blockquote> ![](https://pica.zhimg.com/v2-f3860a4295de3fc467a68d9f387d4b7e_720w.jpg?source=b1748391?rss) 想要让通货/货币流通,另一个层面就是「商品」,**在一代中,居民并没有发展出商品需求**。一代中除了满足供暖外,主要需求就只有「生食材」和「食物」。而在二代中,明确将「商品」与「暖券」挂钩。在游戏说明中,提到: <blockquote>商品是指所有能够满足城市居民需求和愿望的东西。从日常的家具、餐具、书籍、游戏,到奢侈的手表、珠宝、雪茄和华服,商品深受大家喜爱,能为市民带来舒适感。</blockquote> ![](https://pica.zhimg.com/v2-80f7ccc355f32009eb676eda2625bb7f_720w.jpg?source=b1748391?rss) 从这个说明中可以看出,**经过 30 年的发展,二代的居民已经在一定程度上适应了末日生活,并发展了丰富的商品需要。**我觉得这也是合理的,末日早期和适应后的生活需求肯定是不同的。 我将以上所有设定提交给 ChatGPT-o1,让它推演「暖券」到「货币」的演化,以下是 ChatGPT 的回答,注意,**这只是 AI 的模拟回答,并非官方设定**: 「暖券」的演变历程可能是: ### 初期阶段(1886-1894年): - 供热配给工具:最初,「暖券」仅用于分配有限的热能资源。居民通过工作获得定额的「暖券」,用来兑换供暖时间。 - 工作激励机制:不同工作场所根据重要性给予不同数量的「暖券」,激励人们从事关键性或危险性工作,如采掘业。 ### 过渡阶段(1894-1900年): - 私下交易出现:由于个人/家庭对热能需求的差异,有些人可能有剩余的「暖券」,而另一些人则需求更多。这促使人们开始私下交易「暖券」以获取其他商品或服务。 - 交换媒介的萌芽:随着私下交易的增加,「暖券」逐渐被视为一种交换媒介,超出了其原始的供热用途。 ### 扩展阶段(1900-1910年): - 商品种类增加:随着基本生存需求得到满足,居民开始追求更丰富的商品和服务。 - 交易频率提升:市场活动增多,对统一的交换媒介需求加强。「暖券」因其稳定性和普遍接受性,逐渐取代物物交换。 ### 制度化阶段(1910-1916年): - 官方认可:政府注意到「暖券」在市场中的作用,开始正式承认其货币地位。 - 发行与监管:为了维持经济稳定,政府建立了「暖券」的发行和回收机制,确保其供应量与经济活动相匹配。 ### 成熟阶段(1916年及以后): - 全面货币化:「暖券」成为社会中的主要货币,被用于所有的商品和服务交易。 - 金融体系建立:出现了以「暖券」计价的金融服务,如储蓄、贷款和投资,进一步巩固了其货币地位。 顺便感慨一下,ChatGPT o1 确实很强啊… ## 思考 5:游戏中为什么设定为「不满足商品需要就会减少暖券收入」? 除了上面提到,二代中的居民出现了商品需求进而发展出了以暖券为通货的交换行为。但实际上,游戏中的商品交换的设定是:**如果不满足商品需要,就会减少暖券收入。而不是说,如果满足了商品需要,就会增加暖券。** ![](https://picx.zhimg.com/v2-25b72e041b4c2083469425306df9cc60_720w.jpg?source=b1748391?rss) 二者看似只是数值的正反逻辑,但实际上是有差别的,根本差异在于:**即便你在游戏中生产了额外的商品,也不会带来额外的收入**。也就是说,商品交换看似是一种市场行为,实际上也是计划经济行为,只不过没有去印其他各种「商品券」罢了。 ## 思考 6:如何设定并解释「暖券」价值恒定,且不发生通胀、通缩? 基于上面关于暖券和商品的讨论,整套系统都是在计划经济下的,所以可以通过设定强有力的调控,来实现「暖券」的价值恒定,主要分为供需两侧以及制度体系保障。 ### **供给控制**: - **固定发行量**:根据城市的热能生产能力,设定「暖券」的总发行量,避免过度发行导致通胀。 - **回收机制**:通过每周从社区收集「暖券」,调节市场上「暖券」的流通量,防止过剩。 - **与热能挂钩**:「暖券」的发行量直接与实际可供分配的热能总量挂钩,确保每张「暖券」都能兑换固定的热能。 ### **需求管理**: - **稳定的人口增长**:通过规划和控制人口规模,保持对热能和「暖券」需求的稳定。 - **经济活动调节**:可以通过调整工作激励、计划供应商品等手段,影响市场需求。 ### **法律与制度保障**: - **价格管制**:对基本生活必需品和商品实行计划供应,防止因投机导致的物价波动。 - **信用体系建立**:建立信用制度,增强「暖券」的信任度和接受度,减少因信用风险导致的价值波动。 所以硬要为制作组增加设定,还是能解释得通的。 ## 思考 7:在现实中有那些类似「暖券」的通货? 最后我们看一下,按照这样的设定,「暖券」在现实生活中有类似的通货吗?如果想要完美符合这个类比,就需要满足: - 当时没有法币/法币已经失去实际意义 - 该通货是某种可以兑换实物/服务的票据(或者该物本身具有一定使用价值) - 该通货成为事实上的交换手段/流通工具 当然也有一些现实生活中的通货是部分满足设定的。顺便一提,如果对类似的经济设定感兴趣,可以搜索 vouchers / scrip,有一些案例。 我目前可以想到 / 整理的一些案例: ### 粮票、布票、油票等 在计划经济时期,尽管存在法定货币,但由于物资短缺,货币无法购买到所需的粮食等必需品,法币的购买力受限。粮票是政府发行的凭证,持有人可以用其兑换固定数量的物资。 因此在某些情况下,粮票、布票、油票被用于交换其他商品或服务,成为事实上的交易媒介。 ### 特殊背景的代金券(公司商店、公司凭证) 这个在历史上似乎还挺多的,主要指公司以实物或代金券的方式全部或部分发放工人工资。英国专门针对这种行为颁布了《实物工资法》,美国则在 1938 年《公平劳工法》中,将公司私有票据支付工资的行为定义为非法行为。 公司凭证(Company scrip)<sup data-text="" data-url="https://en.wikipedia.org/wiki/Company_scrip" data-draft-node="inline" data-draft-type="reference" data-numero="5">[5]</sup>往往会和公司商店(Company Store)<sup data-text="" data-url="https://en.wikipedia.org/wiki/Company_store" data-draft-node="inline" data-draft-type="reference" data-numero="6">[6]</sup>组合出现,简单来说就是「工资回收计划」。 比如在美国的一些偏远煤矿,公司向矿工支付专用的硬币/代金券,矿工只能在公司商店使用,代金券在矿工社区内广泛流通。 ![](https://picx.zhimg.com/v2-339b50cd406d62348a4e7c0ca5a3ba49_720w.jpg?source=b1748391?rss) <blockquote>在美国,矿场和伐木营地通常由一家单独的公司创建、拥有和运营。这些地点有些非常偏远,通常现金匮乏;即使在不缺现金的地方,拿到公司票据支付的工人也几乎别无选择,只能在公司商店购买商品,因为将票据兑换成货币(如果能兑换的话)会因兑换费损失部分价值。在这种经济垄断下,雇主可以大幅提高商品价格,使工人依赖公司,从而强化了员工的“忠诚”。尽管公司票据并不限于煤炭行业,但据估计,75%的公司票据由肯塔基州、弗吉尼亚州和西弗吉尼亚州的煤炭公司使用。因此,许多关于这种货币的昵称来源于阿巴拉契亚矿区社区,例如“Flickers”、“Clackers”和“Dugaloos”。</blockquote> 但实际上,由于公司商店的垄断性,这往往被视作对工人的剥削: <blockquote>公司商店是垄断机构,将工人的收入重新流回公司老板的手中。这是因为公司商店因其地理位置偏远,其他商家不愿意或无法接受公司票据,或两者兼有,通常面临着很少或没有竞争。因此,价格通常较高。允许赊账购买加强了一种债务奴役,迫使员工留在公司,直到债务清偿。</blockquote> ### 香烟、烈酒、方便面 在资源匮乏的时期/场所,香烟其实会作为通过进行交换。 比如在二战的战俘营中,官方货币不存在,香烟成为主要的交易媒介,用于购买食物、衣物,在电影《肖申克的救赎》中就有这样的场景: ![](https://pica.zhimg.com/v2-b583407aea9775f9a4129999efbd229f_720w.jpg?source=b1748391?rss) 再比如二战后的德国经历了严重的通货膨胀,法定货币贬值,稀缺香烟成为事实上的交易媒介,形成了独特的「战后香烟经济」。 在很多监狱中,香烟、烈酒、甚至来自中国的方便面也是类似的硬通货。 ### 其他末日游戏中的类似设定 《辐射》游戏中的瓶盖、《地铁》系列游戏中的子弹(评论区补充)都是类似的例子。 比如,《辐射》的设定<sup data-text="为什么辐射使用瓶盖作为货币?" data-url="https://screenrant.com/fallout-bottlecaps-money-water-new-california-value-currency/" data-draft-node="inline" data-draft-type="reference" data-numero="7">[7]</sup>: 原有法定货币体系崩溃,瓶盖首次作为货币出现是在 2093 年。当时,位于《辐射》虚构的新加利福尼亚的大型贸易城市的商人们决定在核战后的世界中采用瓶盖作为交易货币。这主要是由于其稀缺性。由于《辐射》中的大战后,**制造和印刷瓶盖的技术几乎完全失传,因此伪造瓶盖的可能性大幅降低**;**尽管瓶盖在各地广泛存在,但其数量有限,防止了通货膨胀**。然而,最重要的是,《辐射》中的瓶盖是以水资源为背书的——在遭受核战蹂躏的荒原中,水是一种稀缺而宝贵的资源。这一背书使得商人们能够将瓶盖作为一种通用的交换单位,瓶盖的流通也迅速从西海岸扩展到了东海岸。 ![](https://pic1.zhimg.com/v2-adc2cca2a1a4c759341798f95639be1b_720w.jpg?source=b1748391?rss) 再比如,《地铁》系列的设定<sup data-text="为什么《地铁》使用子弹作为货币?" data-url="https://techraptor.net/gaming/features/metro-series-bullet-economy" data-draft-node="inline" data-draft-type="reference" data-numero="8">[8]</sup>: 在《地铁》系列中,由于核战争导致科技倒退,战前的军用级弹药(MGR, military grade rounds)变得十分稀有。这种军用级弹药的稀缺性,加上几乎不可能伪造子弹,使其成为地铁隧道中的事实上的通用货币。甚至还设立了与其他战前弹药以及手工制造子弹的兑换比例,以维持经济的流通。 ![](https://picx.zhimg.com/v2-1f80e7dcec46ba934db26ae2847a6342_720w.jpg?source=b1748391?rss) 当然,香烟、子弹这些,与粮票、公司代金券、瓶盖还不完全一样,毕竟粮票、代金券需要背靠一个机构作为兑换的信用背书,而香烟、子弹本身就是消费品,可以自己直接使用。 以上就是我对游戏中「暖券」的设定以及其他类似通货的整体阐述,其中大量参考资料来源网络,能标注出处的我都写了参考链接,供大家深入研究。 【如果你真的能看到这里,希望来点关注、点赞、收藏、喜欢、评论~】 ![](https://picx.zhimg.com/v2-3d70bc51ca30030d4c1c48e71dec1b32_720w.png?source=b1748391?rss) 来源:知乎 www.zhihu.com 作者:[段小草](http://www.zhihu.com/people/loveQt?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=author) 【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 [点击下载](http://daily.zhihu.com?utm_source=rssyanwenzi&amp;utm_campaign=tuijian&amp;utm_medium=rssnormal)此问题还有 [29 个回答,查看全部。](http://www.zhihu.com/question/667494988/answer/3630157856?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) 延伸阅读:[游戏《冰汽时代2》中如何增加暖券收入?](http://www.zhihu.com/question/667801575?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) [游戏《冰汽时代》有什么通关指南值得参考?](http://www.zhihu.com/question/596762723?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title)

2024-09-26 03:24:22 · 1次阅读
 
 
已经掌握独立建造第三代核电站的技术的国家有哪些?

谢邀 [@央视新闻](//www.zhihu.com/people/2fa0d82713f499ce1373dc02a19d02fd) 我是“华龙一号”总设计师邢继。10年之后的我们,可以非常确定地回答题主: **这个名单里,有中国。** ![](https://pic1.zhimg.com/v2-8b4b8102e00d8072e61a88b84e94c595_720w.jpg?source=b1748391?rss) 这是一道来自2011年6月的提问,就在这道问题提出的3个月前,我们中国自主的百万千万级核电技术的梦想,刚刚被一场发生在日本福岛的核泄漏事故击得粉碎。 那时候,承载了几代核工业人梦想的型号CP1000即将开工,10多台推土机已经抵达现场开始挖土,仅仅3天之后,事故发生,项目被按下了暂停键。 福岛核事故对整个核工业发展的影响非常深远。中国作为一个负责任的大国,在核事故发生5天后,国务院发出声明,针对核安全问题提出四条指导性意见,其中有一条就是 中国未来新建的核电站必须满足国际最高安全标准。 中核集团在第一时间组织专家进行评估后,主动放弃了CP1000,转向全力推进第三代核电技术ACP1000,也就是后来“华龙一号”的自主研发。 放弃“CP1000”,这个决心下得非常果断,我们的核电站必须要能够应对所有“假设可能会发生”的事情,此前我们的目标离“要达到国际上最高要求”的这个标准还有距离。 因此,团队受到了相当大的打击。一个准备了12年的计划马上就可以实现,但在下一个瞬间,它变得遥遥无期。 为什么大家如此沮丧? **因为研发一个完全具有自主知识产权的型号,是我们中国核电人的梦想。** 1989年,我被派往广东,那时候大亚湾核电站刚刚开工,我所在的核二院派了100多人到业主单位和法国公司参与建设。我被派到了法国公司的现场技术部做现场施工方面的技术支持。 大亚湾核电站主要的技术全是来自于法国,在装备建造这些领域也主要依靠外国人的技术和管理,甚至连一些最基本的钢筋、水泥等建设材料,都要从外国进口,长期受制于人,感受非常真实。 在这个庞大的工程里,我们需要从零开始,读懂法国人设计的每一张图纸,见缝插针地问各种原理性的问题:为什么要这么设计,遵循了怎样的标准? 年轻时候在大亚湾的这段经历,给我的触动非常深刻。彼时,我国核电领域在设计、建造与管理上的能力尚处于萌芽阶段,中核集团赋予我们的使命,便是踏上这片技术的沃土,虚心学习并汲取先进技术的精髓。我国核电的发展从一开始起步就确定了自主之路。 在学习与合作的过程中还有许多插曲。我记得有一次跟外方的负责人讨论某项技术,我发现这个型号的转让技术资料不完整,请对方讨论如何补充完善,同时商量怎么让我们中国工程师尽快掌握技术,进行自主设计。 外方负责人讲了一句话,我至今都记得很清楚:你们不用研究这些事情,要想知道核电站怎么设计,让你的工程师放下手中的铅笔,去打开复印机,你们就会了。你只要去复印我们的资料,不用搞清楚里面的原因。 我当时非常生气:“如果你不打开你的‘黑匣子’,我们可以不要你的技术转让。”这次冲突让我体会到,尽管我们引进了国际上先进的技术,签了协议,交了学费,但因为核心技术被别人掌握,我们甚至没有跟别人争辩的权利。 **这样的事情太多太多,被卡住脖子的滋味,太难受。** 引进、吸收、消化国际先进技术只是第一步,know how以外更核心的是know why。 我们深刻地认识到,真正的核心技术,靠金钱买不来,靠市场换不来,只有自主研发,我们必须要把核能未来的发展技术掌握到自己的手里,而这条路没有捷径。 所以当CP1000停工之后,我们立即调整状态,全力以赴投入到三代核电技术研发当中。 曾经我们投注在CP1000上的心血,没有白费,用另一种方式扎下了根。 “华龙一号”是一个里程碑,标志着中国核电技术进入了世界先进国家行列。其自主创新不仅限于研发设计与安全理论的深度挖掘,更涵盖了安全分析技术的方法与工具等全方位创新,这是一场系统性、全面性的技术革新。 在设计思路上,“华龙一号”机组对标国际最先进的三代核电技术,充分考虑到了各种可能出现的极端情况,确保即便地震和海啸叠加发生,也能保证安全。我们提出了能动与非能动相结合,设置了多样化的手段来实现余热的导出和放射性的包容;通过双层安全壳等一系列设计,全面地满足国际上最高的安全标准,外层可抵御大飞机的撞击,内层做到即使堆芯出现问题,放射性物质也不会泄漏出来。 “华龙一号”首次实现了真正意义上的所有元素均基于正向设计的理念。在研发过程中,我们开展产学研合作,在“华龙一号”的关键核心设备上实现100%设备自主化、国产化,不仅关键设备,核电建设用的大宗材料也是如此。我们超越了推理模仿复制的层面,实现了从“知其然”到“知其所以然”的蜕变。以安全级电缆的热缩套管为例,这一领域曾长期被国外某企业独占市场,但通过我们与国内企业的共同努力,成功研发出适用于“华龙一号”严重事故场景下的电缆热缩套管,不仅打破了垄断,还实现了成本的大幅降低,其价格仅为国外同类产品的五分之一。 ## 从水泥、电话线都要从国外进口,到实现先进核电堆型首堆68.7个月的最短建设工期,我们靠自己的力量翻越了一座又一座山,实现了我国核电技术从跟跑到并跑的跨越性发展。后来的故事,大家都知道了。 如今,“华龙一号”已步入批量化建设阶段,国内外在运、在建机组总数达到33台,已成为全球在运在建机组总数最多的三代核电技术。我们没有满足于现在的成绩,还在持续研究如何进一步优化“华龙一号”的设计,在保障安全性的基础上,让经济性进一步提升。 ![](https://pica.zhimg.com/v2-a695847e0e6e57c6e8389e1a40116430_720w.jpg?source=b1748391?rss) 正在开展的“华龙一号”后续机型相关验证试验,不断传来好消息。从指标上来看,它的安全性依然比国际上三代要求高一个量级,经济性优于今天的“华龙一号”批量化目标,同时,其建设工期大幅度缩短到50个月以内。不仅如此,它的电厂可用率和电厂设计寿期都得到了提高。 我听说过一个小故事。很多年前,909厂的核潜艇陆上模式堆发出了中国核能的第一度电,后来,在拆除屏蔽墙的过程中,年轻的工程师们在铅块底下发现了这样一句跨越时空的问候:“孩子们,辛苦了。” 我们不知道是谁偷偷写下了这句话,但那时的他们一定与如今的我们一样,期待着蓝色光芒的闪烁,期待着中国核工业的远航。同样,我们也希望通过现在的努力,让后来者站在我们的肩膀上眺望。 一代人有一代人的使命,核工业这个行业从诞生的那一天起就跟“科技自立自强”紧密相关,它是血脉的传承,自主创新,就是我们这一代核电工程师的使命与考验。中国自主的核电技术已经进入世界的第一阵营,竞争还在继续,领跑只是开始。 中“华”复兴,巨“龙”腾飞。“华龙一号”这个名字,代表了一种深沉的期许。我们是龙的传人,注定走向强大。强核报国,创新奉献,相信这样的精神会在核工业行业一代一代地传承下去。 来源:知乎 www.zhihu.com 作者:[邢继](http://www.zhihu.com/people/57-2-33-25?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=author) 【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 [点击下载](http://daily.zhihu.com?utm_source=rssyanwenzi&amp;utm_campaign=tuijian&amp;utm_medium=rssnormal)此问题还有 [39 个回答,查看全部。](http://www.zhihu.com/question/19700567/answer/3635928923?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) 延伸阅读:[如何评价「中国自主核电站神经中枢实现百万千瓦级核电工程首台套应用」?](http://www.zhihu.com/question/278357130?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title) [如何评价内陆核电站的发展?](http://www.zhihu.com/question/292431114?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=title)

2024-09-25 10:30:53 · 1次阅读
 
 
Reverse-o1:OpenAI o1原理逆向工程图解

OpenAI o1的推出称为横空出世不为过,尽管关于Q*、草莓等各种传闻很久了,用了强化学习增强逻辑推理能力这个大方向大家猜的也八九不离十,但是融合LLM和RL来生成Hidden COT,估计很少人能想到这点,而且目前看效果确实挺好的。 OpenAI奔向Close的路上越走越远,你要从o1官宣字面来看,除了“强化学习生成Hidden COT”外,基本找不到其它有技术含量的内容。Sora好歹还给出了个粗略的技术框架图,字里行间也透漏不少隐含的技术点,细心点总能发现很多蛛丝马迹,串起来之后整个背后的技术就若隐若现(若对此感兴趣可看下我之前写的分析:[技术神秘化的去魅:Sora关键技术逆向工程图解](https://zhuanlan.zhihu.com/p/687928845) )。而且,尽管目前有不少公开文献在用LLM+RL增强大模型的推理能力,但几乎找不到做Hidden COT生成的工作,所以可供直接参考的内容非常少,这为分析o1进一步增添了难度。 那是否就没办法了呢?倒也不一定,如果多观察细节,再加上一些专业性的推论,我觉得还是有痕迹可循的。本文以相对容易理解的方式来对o1做些技术原理分析,试图回答下列问题: 除了复杂逻辑推理能力获得极大增强,o1还有其它什么重要意义? o1的完整训练过程大致会是怎样的? o1是单个模型,还是多个模型? O1中的RL状态空间如何定义?行为空间如何定义?会用何种Reward Model?可能用何种训练数据?LLM和RM融合后的模型结构可能会是怎样的?……等等 为行文中指称方便,我将文中推导的模型称为“Reverse-o1”。当然,里面有些部分有判断依据,有些则是根据主流技术作出的推断,只要OpenAI不官宣技术框架,大概一千个从业者能有一千种解法,我主要参考了AlphaZero的做法,试图在此基础上融合LLM和RL,很多看法比较主观,谨慎参考。 ## OpenAI o1的重要意义 我个人认为OpenAI o1是大模型技术领域的一个巨大突破,除了复杂逻辑推理能力获得极大提升外,这里展开分析下它在其它方面的意义和价值所在。 **首先,o1给大模型带来了自我反思与错误修正能力,我觉得这点价值特别大。**GPT 4这类模型,因为在输出答案的时候是逐个Token输出,当输出长度较长的时候,中间某些Token出错是一定会发生的,但即使LLM后来知道前面输出的Token错了,它也得将错就错往下继续编(这也是大模型幻觉的来源之一,为了看上去逻辑合理,LLM得用100个错误来掩盖前面的第一个错误),因为落Token无悔,没有机制让它去修正前面的错误。 而o1在“思考”也就是生成Hidden COT的过程中,如果你分析过OpenAI官网给出的Hidden COT例子的话,会发现它确实能意识到之前犯错了,并能自动进行修正。这种自我错误识别与修正对于LLM能做长链条思考及解决复杂任务非常重要,相当于越过了一个锁住LLM能力的很高的门槛。 **第二,所谓新型的RL的Scaling law**。OpenAI自己PR可能更强调这点,各种解读也比较看中这一点。我猜测o1的RL大概率要么用了相对复杂的、类似AlphaGo的MCTS树搜索,要么用了简单树结构拓展,比如生成多个候选,从中选择最好的(Best-of-N Sampling),这种策略如果连续用,其实也是一种简单的树搜索结构。也有可能两者一起用。不论怎样,树搜索结构大概率是用了,COT是线性的不假,但这是产出结果,不代表内部思考过程就一定是线性的,我觉得靠线性思维推导过程很难解决复杂问题,树形结构几乎是不可避免的。 有人问了,你有证据能说明o1大概率用了搜索树结构吗?我没有证据,但是可以推断,我的判断依据来自于o1 mini。之前的研究结论是这样的:尽管小模型语言能力强、世界知识还可以,但逻辑推理能力很难提起来,即使你通过比如蒸馏等措施试图把逻辑能力内化到小模型的参数里,效果有但有限,小模型和大模型差距最大的能力就是逻辑推理能力了。意思是说,纯靠参数内化来提升小模型的逻辑推理能力估计提升幅度有限。但o1 mini明显是个小模型,其复杂逻辑推理能力非常强,而且看样子可通过配置来提升或者降低它的逻辑推理能力(所谓inference-time Scaling law),如果你了解AlphaGo的运作机制的话,会发现这都是比较典型的搜索树的特点,可以通过控制搜索空间大小来提升模型能力。 ![](https://pic1.zhimg.com/v2-95aeaee70ceced5bad8b235ba56ef5b6_b.jpg) 虽然我个人认为,如果把通过设置参数来控制如何拓展树结构(比如控制搜索的宽度和深度),这种模式如果能被称为Scaling law的话,多少有点勉强,若这样,那我们可以说2006年AlphaGo出来就有Scaling law了。 但不管怎么称呼它,无法忽视的是这种方法的可扩展性极好,无论是在RL训练阶段,还是LLM的Inference阶段,只要改下参数配置来增加树搜索的宽度和深度,就能通过增加算力提升效果,可扩展性好且方式灵活。从这点讲,o1确实具有重要意义,因为这证明了它把怎么融合LLM和树搜索这条路走通了,LLM模型能够达到AGI的上限就被提高了一大截。 **第三,在o1之后,小模型大行其道真正成为可能。**小模型最近大半年也比较火,但从能力获取角度看,其实还是有上限锁定的,这个锁定小模型上限的就是逻辑推理能力。上面提到了,小模型的能力特点是:语言能力很强不比大模型弱、世界知识不如大模型但是可以通过给更多数据持续提升、受限于模型规模,逻辑推理能力能提升但比较困难。 ![](https://pica.zhimg.com/v2-3c3cefb0f2f574642e42b420d891153c_b.jpg) 所以小模型的优化重点是世界知识和逻辑推理能力,而从o1 mini的效果(世界知识弱、逻辑推理强)可推出,之后我们可以采用“能力分治”(DCA,Divide-and-Conquer of Ability)的模式推进小模型的技术发展(参考上图):把语言、世界知识及逻辑推理三个能力解耦,语言能力靠小模型自身、逻辑推理靠类似o1的通过RL获得的深度思考能力,而世界知识可以靠外挂RAG获得增强。 通过“能力分治”,小模型完全可能具备目前最强大模型的能力,这等于真正为小模型扫清了前进路上的障碍,而SLM做起来成本又比较低,很多人和机构都可以做这事,所以可以预测:之后这种DCA模式将会大行其道,形成一种新的研发小模型的范式。 **第四,o1可能会引发“安全对齐”新的范式。**O1在做安全对齐方面,大概采用了类似Anthropic的“AI宪法”的思路,就是说给定一些安全守则,指明哪些行为能做,哪些不能做,在o1逻辑推理能力提高之后,它遵循这些法则的能力也获得了极大增强,安全能力比GPT 4o强很多。这可能引发安全对齐新的模式:大家可以先把模型的逻辑推理能力加强,然后在此之上采取类似“AI宪法”的思路,因为OpenAI o1证明这种模式可极大增强大模型的安全能力。 **第五,“强化学习+LLM”的领域泛化能力,可能不局限于理科领域。**强化学习适合解决Reward比较明确的复杂问题,典型的是数理化、Coding等有标准答案的学科,所以很多人会质疑o1是否能泛化到更宽的领域。确实,o1的思考能力能否泛化到没有明确标准答案、Reward不好量化的领域是它发展的关键,泛化得好,则打开阳光大道,泛化得不好,领域局限性就会比较强。 我推测OpenAI可能已经找到了一些非数理学科的Reward定义方法,并将这个方法通过RL拓展到更多领域。既然o1可以读懂并遵循安全规则,以 “AI宪法”的思路解决安全问题,我觉得由此可以推导出一种针对模糊标准的Reward赋予方法:就是说针对不好量化的领域,通过写一些文字类的判断标准或规则,让大模型读懂并遵循它,以此来作为是否给予Reward的标准,符合标准则Reward高,否则Reward低。例如,针对写作文,就可以列出好文章的标准(结构清晰、文笔优美等规则),让大模型据此来给Reward。如此就能拓展到很多领域。 当然,想要这么做可能要分步骤,先用好给Reward的数理问题增强模型的复杂推理能力到一定层级,这样它就能看懂规则了,然后再做那些不好量化Reward的领域。(这都是我的猜测,没有依据) 由上述分析可看出,o1这条技术方向不仅增强了模型的复杂逻辑能力,由此可能引发大模型研发很多重要方向的革新,这是为何我说o1重要的主要原因。 ## OpenAI o1的完整训练过程推演 ![](https://pic3.zhimg.com/v2-9fb64105589b35f9a877702acf990746_b.jpg) GPT 4等LLM模型训练一般由“预训练”和“后训练”两个阶段组成(参考上图)。“预训练”通过Next Token Prediction来从海量数据吸收语言、世界知识、逻辑推理、代码等基础能力,模型规模越大、训练数据量越多,则模型能力越强,我们一般说的Scaling Law指的是这一阶段的模型扩展特性,也是LLM训练最消耗算力资源的地方。“后训练”则分为SFT、RM和PPO三个过程,统称为人工反馈的强化学习(RLHF),这一阶段的主要目的有两个,一个是让LLM能遵循指令来做各种任务,另一个是内容安全,不让LLM输出不礼貌的内容。而训练好的模型推理(Inference)过程则是对于用户的问题直接逐个生成Token来形成答案。 OpenAI o1的整个训练和推理过程应与GPT 4这类典型LLM有较大区别。**首先,“预训练”阶段应该是重新训练的,不太可能是在GPT 4o上通过继续预训练得到**。证据很好找,OpenAI官方一再宣称o1 mini逻辑推理能力极强,但在世界知识方面很弱。如果是在其它模型上魔改的,世界知识不会比GPT 4o mini更弱,所以侧面说明了是重新训练的;另外,这也说明了o1这类侧重逻辑推理的模型,在预训练阶段的数据配比方面,应该极大增加了逻辑类训练数据比如STEM数据、代码、论文等的比例,甚至我都怀疑o1 mini是否引入了通用数据都不好说,否则不需要老强调知识方面能力弱。 在“后训练”阶段,应该有一个环节是用来增强LLM模型的指令遵循能力的,也就是说**RLHF阶段应该是有的**。因为o1在遵循指令方面能力并不弱,而且生成的Hidden COT片段里明显也包含很多指令性的内容,如果遵循指令能力比较弱,估计对于生成Hidden COT也有负面影响。所以,推断起来这个环节大概在“思考”阶段之前。(但是RLHF阶段未必有RM和PPO)。但这里和GPT 4对应的RLHF阶段应有两个重要的不同:首先,o1应该在这个阶段没有做内容安全方面的事情,大概率是挪到后面的阶段了(也有可能这两阶段都做了?)。其次,这个阶段大概率也会极大增强逻辑推理类的指令遵循数据比例,以此进一步加强基座模型的逻辑推理能力,原因我们等会专门说明。 接下来的阶段,就是o1最大的特点,所谓**引入了“系统2”的慢思考能力**。ClosedAI只说用了RL强化学习,其它任何都没提,技术保密工作一流。由此,我们只能推断出o1融合了LLM和RL来实现模型“先想后说”的Think能力。 ![](https://pic4.zhimg.com/v2-17e2677569d4a2e673b87da785213a73_b.jpg) **OpenAI o1应把“内容安全”相关的能力挪到了“Think”阶段之后,而且做法和GPT 4应该也有很大不同。**在o1通过Think阶段进一步增强了它的逻辑推理能力之后,并没有用与安全相关的Instruct数据去调整模型参数,而是转为在比如System Prompt里引入人写好的LLM应该遵循的若干安全规则,比如不能输出制造有害产品比如毒品的细节内容等等。O1逻辑能力增强后,在输出时基本能够参考“安全条例说明书”,不输出有害内容,这做法类似于之前Anthropic的“AI宪法”的思路(依据参考上图)。而且,o1在内容安全方面的能力比GPT 4o强很多,这意味着将来大模型安全范式的巨大变化:应该先极大增强模型的逻辑推理能力,继而采取类似“AI宪法”或者叫“AI安全说明书”的模式来做。很明显如果这样,安全这事情做起来就简单多了,因为等于把LLM当人看了,你告诉他哪些能做,哪些不能做,当它逻辑能力强起来,现在就完全能看懂了,就这么回事。 以上是o1的训练过程,在模型推理(Inference)阶段,o1体现出了“先思考再发言”的特点,分为三个阶段:首先通过思考,根据用户Prompt的问题生成能体现思考过程的Hidden COT数据,因为很多Hidden COT很长,于是引入了“COT摘要”阶段,从很长的Hidden COT里提取一些关键思考环节展示给用户看看,最后根据COT输出答案。 从上面内容可看出,o1无论在训练还是模型inference阶段,和传统的LLM应该还是有很大区别的。此外,我在这里再展开讲讲两个事情。 第一个,想要仿造模型来达到类似o1的效果,一个很容易想到的取巧的方式是:既不去专门增强基座模型的逻辑推理能力(比如大幅增加预训练中逻辑类数据占比),也不做“慢思考”阶段的RL训练(因为不知道怎么做的),只是侧重在模型inference阶段加入“Think”的过程,比如想办法引入最简单的Best-of-N Sampling这种树拓展策略,再写写Prompt提醒让LLM自己要自我思考、自我反思,两者相结合,也可以让模型自己写Hidden COT。这样做,也能一定程度上提升模型的推理效果。但是,这种做法效果提升的天花板比较低,就是说你模型逻辑推理能力看着提高了一些,然后就会被卡住,即使再增加inference阶段的算力(就是把采样数量N比如从10个拓展到50个,类似这种。Inference-time Scaling law大概其实很可能就是这个意思,您觉得这做法是law还是不law呢?)其实也没用。 ![](https://pic1.zhimg.com/v2-ad532ab3a436e71986f1e772b1b885de_b.jpg) 这个结论来自于文献“Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters”及“Are More LM Calls All You Need? Towards the Scaling Properties of Compound AI Systems”,它们证明了:对于简单或者中等难度的逻辑推理问题,通过inference-time 增加算力,比如树搜索等方式,比去增强模型的“预训练”阶段的逻辑推理能力来得效果要明显;而对于高难度的逻辑推理问题,则只靠inference-time很难提升,有时还是负面作用,不如去增强模型“预训练”阶段的逻辑能力(参考上图)。 这是为啥呢?您可以想想,其实里面的道理细想一下很好理解。这是因为对于简单或中等难度的问题,模型在inference的时候很可能给出答案中的大部分步骤都是对的(或者多次采样中多数是对的),只有个别步骤错误,导致最终回答错误。通过比如Best-of-N Sampling这种简单树搜索方法来增加输出的多样性,再加上靠谱的Verifier筛一筛,是比较容易把这个小错误修正过来的。但对于高难度的逻辑问题,因为模型输出内容中大部分步骤可能都是错的(或者多次采样中大多数都是错的,这种情况你投个票采取多数人意见看看,结果估计很悲催),你想靠inference-time增加算力无力回天。 我自己也是根据上述思考,才进一步反推出上面讲的o1可能的训练过程的:OpenAI o1的基座模型,不论是Pre-training还是Post-training阶段,大概率极大增强了基座模型的复杂逻辑推理能力,这是它能在后续inference-time增加算力解决复杂问题的根基。 所以关于这个点的结论应该是这样的:只靠inference-time增加算力,仅对容易和中等难度的逻辑问题有用,想要不断提升模型的复杂推理能力,还需要继续在Pre-Train和Post-Training阶段下功夫。 讲到这有人就问了:那我也没钱自己训练基座模型啊?这可如何是好?这其实是绝大多数人面临的问题。其实拿来主义也应该可以,但是你得选那些逻辑推理能力强的基座模型,我估计代码类的基座模型相对比较适合,然后想办法在“Think”训练和“Think”inference方面做点工作,感觉应该也是可以的,而且对算力的需求也到不了大多数人做不了的程度。 第二个展开讲讲的事情。其实跟第一个有关,我看现在很多人看了o1后都说,Scaling范式变了,只要去Scale Inference-time的算力,模型推理效果就能一直Scaling。很明显这是进入误区了,原因上面讲了,如果只做Inference-time算力的拓展,模型效果天花板应该不会太高,归根结底还得去拓展Pre-train或者Post-train阶段模型的复杂逻辑推理能力,最起码两者是个相辅相成互相促进的作用,只谈inference-time Scaling大概率是不对的。 ## o1应由多个模型构成 ![](https://pic1.zhimg.com/v2-e06726a685a277f46889bae988cae0ea_b.jpg) 从o1的System Card可以明确看出,o1除了一个主模型外,至少还有一个相对独立的“Hidden COT摘要模型”(参考上图),它的作用是根据用户输入问题及生成的Hidden COT,提供一份简洁且内容安全的COT摘要。所以,**o1至少由两个模型构成。** 那么,问题是:**除了主模型和摘要模型,还有其它模型存在吗?我觉得大概率是有的**。 ![](https://pic2.zhimg.com/v2-b9073bba97390a15a6447f5f21e3019f_b.jpg) 我们可以从o1的价格入手分析。目前已知:o1 Preview比GPT 4o的输入价格贵3倍,输出价格贵4倍,o1 mini输入和输出价格都是GPT 4o mini的20倍(参考上图)。 ![](https://pic4.zhimg.com/v2-c38d2e5cd2e9bf026fc13ab56bbdc0b3_b.jpg) 这里插入一段,解释下为何大模型的输入价格和输出价格是不同的,这是因为在大模型推理(inference,相对模型训练来说的,不是指逻辑推理)阶段,分为Prefill和Decoding两个阶段(参考上图)。Prefill阶段首先把用户的输入prompt通过并行计算,产生每个Token 对应Self Attention的Key-Value,并存储在KV Cache中,供Decoding阶段产生每个Token时候计算Self Attention时候用,这个阶段每个Token的Key-Value可并行计算,模型运行一次能输出多个Token的KV,所以GPU利用率高;而Decoding阶段根据用户Prompt生成后续内容,但模型运行一次只能产生一个Token,所以无法有效利用GPU的并行计算特长,资源利用率不足。资源利用率的差异导致了输出阶段成本高,这是为何大模型一般输出价格是输入价格3到4倍的原因。 说回来,关于价格的核心问题是:为何比如o1 mini的输入价格(输入部分大模型的处理逻辑简单,只产生Prompt对应的KV Cache,更容易分析)是GPT 4o mini的20倍?这是个很奇怪的点,仔细思考的话,这里应包含关于o1内部机制的很多线索。输入价格对应Prefill阶段,Prefill原则上只处理用户输入Prompt和Sys Prompt。Prefill阶段价格贵20倍,只有两个可能: 一种可能是用户Prompt+Sys Prompt的输入长度是GPT 4o mini输入的20倍。用户输入的Prompt对o1和4o来说当然是一样的,如果增加这么多输入,只能是OpenAI往sys Prompt里塞入了很多东西。但是考虑到o1 Preview只比GPT 4o贵3倍,那么sys Prompt特别长的可能性就不大了,否则o1 Preview的输入价格也应该比GPT 4o贵20倍才是。另外,如果只是sys Prompt带来的价格上升,那么o1在Decoding阶段就不应该那么贵了,因为sys Prompt 主要影响Prefill阶段的计算成本(当然,如果KV Cache长了,Decoding在计算Self Attention的时候计算量也会增加,因为要看到更长的上文,但是以目前大模型对长文本的支持能力,成本不会高太多)。 所以,针对这种可能性,结论大概是:OpenAI可能往sys Prompt里塞入东西了(应该是上面提到的“安全规则手册”啥的),但是并没有达到20倍价格的差异。塞入很长的sys Prompt这条原因不能解释20倍价格差距。 我们来考虑第二种可能性。如果假设输入Prompt长度差异没有太大,那么从Prefill计算机制角度来看,只能理解为o1 mini的模型总参数量是GPT 4o mini的20倍左右(除了摘要模型外,还有十多倍的差异)。这里又有两种可能,一种是说o1 mini就一个模型,那么它参数量是GPT 4o的大约20倍,这个很明显不成立,我们可以看到各种测试中o1 mini跑的速度挺快的,所以单个模型不可能太大; 于是,剩下的唯一解释就只能是:o1 mini除了一个主模型,一个摘要模型外,大概还有18个规模相当的其它模型。考虑到o1 Preview输入价格只比GPT 4o贵三倍,可以理解为o1 Preview除了一个主模型,一个摘要模型,还有另外一个规模相当的其它模型。因为o1 Preview的总体工作机制应该和o1 mini是类似的,可知o1 Preview多出来的那一个模型,和o1 mini多出来的那18个模型(那为啥这18个模型不共享KV Cache呢?如果可以共享KV Cache的话,起码在Prefill阶段,18个模型可以缩减为1个模型,那么o1 mini的输入价格只需要比GPT 4o mini贵3倍就够了。既然仍然贵20倍,侧面说明了这18个模型本身模型参数或者配置是有差异的,导致相互之间无法共享KV Cache),大概是干同一类事情的。而这个事情的性质呢,是模型个数可伸缩配置的,就是说你可以设置这个地方是部署1个、5个还是18个这类模型,而且这类模型相互之间还有些差异导致无法共享KV Cache。O1 mini在很多场景的效果要比o1 Preview效果好,一定程度上可能是跟这类模型的部署个数有关的,所以我推断,这类模型大概率跟树搜索有关。 ![](https://pic1.zhimg.com/v2-acae36667fed19c7c092b7273c6f9d1a_b.jpg) 综合起来,也就是说,**o1模型大概由三部分构成(参考上图):一个主模型,一个摘要模型,还有一类可灵活配置个数的跟树搜索相关的模型池子**。如果我们自己想要给出技术方案逆向工程o1,你的技术方案可能就需要满足这个约束条件,需要包含这些模型,并能解释清楚这类模型池子的运作机制。 ## OpenAI O1可能采用的训练数据 ### 人工标注数据 首先,训练o1肯定会人工标注一批COT思考过程,就是说拿到一批&lt;问题,答案&gt;数据,通过人工把解决问题的思考过程和步骤写下来,形成&lt;问题,思考过程(包括思考过程中出现的错误及错误修正过程),答案&gt;。如果没有人工标注过程,那么COT里出现的:Hmm,wait,…这种,如果是纯靠LLM自己产生的,那估计LLM已经有意识了,这个概率很小,这些大概率最初来自于人工标注数据。可以用这些数据SFT一下o1初始的模型,启动模型的输出模式,让它熟悉这种表达方式,但是仅靠SFT肯定是不够的。 ### 合成数据 人工标注难度大、成本高,所以人工标注的COT数据数量不会太多,人工标注的问题是可扩展性太差,优点是质量比较高;之后可以采用合成数据的模式,一种最直观的合成数据的方式就类似上面提到制作PRM标注数据的模式:从人工标注的COT里面截取一段人工标注片段,然后使用MCTS树搜索方式去补齐后续推理过程,每个片段跑多次,有的最后答案正确有的错误,无论是正确还是错误,都可以作为合成数据来训练o1模型。如果更激进一些,对于有确定标准答案的逻辑问题,可以通过不断试错的模式直接从问题开始搜索正确答案,这里搜索到的正确答案和错误答案都可以用来训练o1模型(但是这貌似就已经是o1了?所以可能性不大)。 ### 代码COT数据的反向生成 有一种极大拓展代码COT数据的办法:我们有大量现成的各种代码,可以教会大模型试着从代码反向生成Hidden COT的推理步骤,这个应该是可行的,并能极大拓展Coding类型的COT数据。(类似的思路借鉴自:Planning In Natural Language Improves LLM Search For Code Generation) ### 数学COT的反向生成 ![](https://pic1.zhimg.com/v2-f28af3f85e4e00dd5766eba08a1e409c_b.jpg) AlphaProof这种能力强的数学解题系统,整体思路是首先把自然语言的数学问题通过一个模型转化为形式化语言描述,然后使用lean及类似AlphaZero的模式,通过强化学习和树搜索来不断搜索并验证中间推理步骤。这种方法效果是可以保证的,目前基本可达到IMO银牌选手水准(参考上图蓝色部分)。但是这种需要转化成形式化语言再解题的系统有一个问题,就是通用性差,基本只能用来解决数学题,很难扩展到其它领域。 **受到代码反向生成的启发,我觉得也可以反向生成数学COT**(参考上图红色部分)。既然AlphaProof可以构造从自然语言问题翻译成形式化数学语言的神经网络,那也可以构造一个反向生成的模型,就是把数学形式语言翻译成自然语言,然后用这个翻译系统把AlphaProof找到的解题推理过程,从形式化语言转换成自然语言思考COT。当然,中间做错的也可以用,因为它有明确的验证系统,每一步即使错了,为啥错也知道,这些也可以翻译成自然语言。这样可以构造出千万量级甚至上亿量级的数学推理COT思维过程数据。我觉得这个思路大体是可行的。 OpenAI o1目前在数学和Coding方面效果最好,可知这方面的训练数据是最多的,我不知道是否会采用类似反向生成的思路来自动构造COT数据,但貌似这种方法看上去可行性还比较高。 ## Reverse-o1:RL的关键要素及如何将RL与LLM融合 我们从这里开始推导o1可能以何种方式将RL与LLM融合起来,并把推导出的模型称为Reverse-o1。 我们会先分析下在Hidden COT场景下RL的关键要素:状态空间(State Space)、行为空间(Action Space)、奖励模型(Reward Model)。至于RL方法,我推测采用类似AlphaGo/AlphaZero的概率较大,有几个原因: 首先,据说OpenAI员工每天要读好几遍萨顿写的“苦涩的教训”,而里面提到“能够发挥算力的通用方法,如搜索和学习,将最终大获成功”,这里的搜索主要指的就是DeepMind AlphaGo的MCST方法,OpenAI员工耳濡目染不把搜索用起来做个实践也说不过去不是? 第二,前几天OpenAI官宣的o1主力成员采访视频里,有员工提到了他们一直以来都在尝试如何将AlphaGo的搜索方法和LLM融合起来,这也是证据之一。 所以,之后会简单介绍下AlphaZero的工作原理,并尝试将其和LLM融合起来构造复杂逻辑推理系统。 ### O1中RL的状态空间:Token序列组成的连续状态空间 ![](https://pic4.zhimg.com/v2-8675ae548e9a87c0b80601c5bcd416f7_b.jpg) 关于o1的RL状态空间,首先的问题是:这个状态空间是离散的还是连续的?大概率是连续状态空间,或者说最好把它看成是连续状态空间。O1由LLM和RL组合而来,当用户输入问题时,很自然的,这些组成问题的Token序列作为一个整体可以看成第一个状态(State1),State1的Token序列作为o1模型的输入,o1在行为空间里选择某个行为(至于行为空间如何定义后面再谈),先不管这个行为是什么,反正选择这个行为后,o1会输出一个Token序列片段(不会是完整的Hidden COT,应该是其中的某个片段)。之后,o1把新生成的Hidden COT片段内容追加到State1之后,形成State2,再次作为o1的新输入,o1根据新输入选择新的行为,输出新的Token序列片段…..如此往复,直到Hidden COT输出结束。基本是这么个过程。 o1的RL状态空间不太可能由离散状态构成,你很难清晰地划分出若干具体状态。当然,可以说极端情况下,每个Token形成状态空间中的一个离散状态,但是这样基本没有实际的可行性。如果是每个Token代表一个状态S,首先这个状态组合空间太大。假设Token词典大小是10万,2个Token组合空间就是10万的平方,长度为n的Token序列,状态空间就是10万的n次方,基本是天文数字。其次,对于o1的RL来说,每输入一个Token就需要选择某个行为A,并生成下一个Token代表转移到另一个状态S’。如果RL过程带有搜索,意味着每个Token需要做一次搜索,而我们从很多o1的网上例子可以看到,很多时候Hidden COT是非常长的,几十上百K都有可能,这计算量基本是不可接受的。所以把每个Token看成离散状态,不是不行,但颗粒度太细,感觉很难在实际中应用。 ![](https://picx.zhimg.com/v2-4a1163dfae8d9fdf081994b0a3efb4e9_b.jpg) 我觉得把o1的状态空间看成由Token序列组成的连续状态空间比较合适,上面例子尽管提到了State1或者State2,看着好像是离散状态,这只是方便解释过程而已(当然,如果把State1看成在巨大无比的Token组合空间中采样的一个点,这没问题)。就类似RL打游戏或者RL下围棋,RL输入的游戏(或围棋)画面由比如1024*1024个不同像素构成(不同像素可以类比为LLM的不同Token),由于像素组合空间过于巨大,很难清晰定义离散的一个一个State到底是什么,所以一般RL打游戏或者下围棋都是把输入图像当作一个整体,看成连续状态空间,通过一个神经网络来映射到某个具体的行为上。O1的状态空间和图像是类似的(参考上图),可以把一个Token片段类比RL打游戏对应的某个图片输入,看成由Token序列组成的连续状态空间,经过o1的LLM+RL神经网络映射到某个行为空间中的行为。 从上面分析可以看出,打游戏或者下围棋采用的RL技术,大都是以连续状态空间作为网络输入,而输出大都是离散行为空间中的某个行为,所以很明显这些地方采用的RL技术就比较适合用来作为o1的RL部分的解决方案,而采取离散状态空间的RL模型,比如MDP类方法就不太适合。 ### O1中RL的可能行为空间:“思考因子(Thought-Factor)”离散行为空间 ![](https://pic3.zhimg.com/v2-42ece6771834ba4ac3468a02f836c182_b.jpg) O1的RL技术方案,其中最关键的环节很有可能是如何定义行为(Action)空间。OpenAI 01的Hidden COT产生过程,本质上是在让机器模仿人在解决复杂问题产生的思考过程,而人在思考复杂问题时,有比较固定且数量并不太多的“思考模式”或者可以叫“思考因子”。比如拿到一个复杂问题,我们一般会首先明确这个问题的目标是什么,然后把复杂问题拆解成几个环节或者步骤,为了得到某一个具体步骤的解法,可能会提出一个假设,然后验证这个假设是否成立,如果不成立,那么继续提出新的假设,直到解决这个子问题…..我们也可能在过程中会进行验算并发现某些中间环节出现错误,并把错误修正过来。 如果仔细分析OpenAI官网放出来的几个Hidden COT,会发现是可以从里面归纳出一些典型的人类思考问题的一些隐含的“思考因子”的(参考上图,我给出了一些具体的例子)。我觉得要是把Hidden COT看成一个一个Token构成的,RL这事情就很难做了(Hidden COT的状态空间已经是连续非离散的,如果行为空间也是非离散的或者组合空间过大,RL很难建模。所以行为空间是离散的,这个极大概率为真,当然怎么定义离散的行为空间应有不同方法),在我的设想中,一个合理的方法是归纳出人类思考复杂问题的隐含的“思考因子”,以此作为候选的行为集合,比如:“拆解问题”、“复述目标”、“检查结果”、“修正错误”、“提出假设”等等,总体数量应该不会太多,即使划分得细致一些的话,估计也就几十到上百种。而针对每个具体的“思考因子”,可以产生符合对应分布概率的Token片段,比如行为若是“提出假设”因子,则生成“Alternatively”这个Token的概率就比较大(通过PPO从训练数据里学到的)。那么,Hidden COT片段很可能其真实面貌是长这样的: &lt;ACT_Proposer-Start&gt; Alternatively, perhaps combine the numbers in some way. &lt;ACT_Proposer-End&gt; (提出假设) &lt;ACT_RephraseTarget-Start&gt; Overall Task: Write a bash script that takes one argument (the string representing the matrix) and outputs its transpose in the same format.&lt;ACT_RephraseTarget-End&gt; (复述目标) 也就是说,OpenAI的Hidden COT的原始内容或者训练数据,在形式上有可能是这样的二级结构: &lt;Think_Start&gt; (Hidden COT起始标记) …… &lt;ACT-1_Start&gt;token token token…..&lt;ACT-1_End&gt; (思考因子1) &lt;ACT-2_Start&gt;token token token…..&lt;ACT-2_End&gt; (思考因子2) &lt;ACT-3_Start&gt;token token token…..&lt;ACT-3_End&gt; (思考因子3) …… &lt;ACT-n_Start&gt;token token token…..&lt;ACT-n_End&gt; (思考因子n) &lt;Think_End&gt; (Hidden COT结束标记) ![](https://picx.zhimg.com/v2-da915a993a7eecb442e29cd11edd1c27_b.jpg) 这种层级的Hidden COT结构,能体现出RL和LLM的优势结合,离散行为空间比如估算给定状态S采取何种行为,即函数Q(S,A)的估算,这是RL擅长做的事情,而思考因子标签中的Token生成则是LLM擅长的事情,LLM可以根据对应“思考因子”的类型,学习调整因子标签内部Token的生成概率。上图展示了如上所述二级“思考因子”离散行为空间后,o1的可能运作形式。在生成Hidden COT的过程中,输入和输出都带有ACT行为Token的起始和结束符号,首先,O1根据当前的问题和已经生成的Hidden COT片段,预测下一个最可能采取的“思考因子”,以决定后面要采取怎样的具体思考模式,然后在这个“思考因子”指导下,LLM生成具体的Token序列,以“思考因子”的结束Token作为这种思维模式的结束标记。并将本步输出的Token序列并入输入,来循环往复地生成下一步思考的对应行为及Token序列。(当然整个过程都是我的设想,没有具体证据)。 那您会问:为啥我在给出的Hidden COT例子里看不到“思考因子”对应的起始和结束Token呢?可能展示给用户的COT是过滤后的版本。你想,Hidden COT的起始和结束Token(&lt;Think_Start&gt;/&lt;Think_End&gt;),这两个Token极大概率是会有的,您不也没看到不是?说明输出的是过滤后的COT,那么,原先是有“思考因子”标记,但显示的时候被过滤掉,这也是有可能的。 ### O1中RL模型的奖励模型(Reward Model) ![](https://pic2.zhimg.com/v2-56c22423a3318236e0ff14aabad6cb29_b.jpg) Reward如何设置对于RL来说至关重要,之前LLM+RL的学术工作其实蛮多的,归纳一下的话,目前常用的Reward模型有两种(参考上图):结果奖励模型(ORM,Output Reward Model)和过程奖励模型(PRM,Process Reward Model )。 ORM的意思是训练一个模型,不管推导过程有多少步,只对最后结果打分。如果对照Hidden COT看的话,意思是只有o1把Hidden COT完整地写完了,ORM才给出一个奖励信号,模型结果若和标准答案对上了,给奖励1,如果答案错误,给奖励-1,类似这种。很明显,ORM的优点是反馈信号准确,比如对于数学题,模型要么做对了,要么做错了,很明确,所以反馈信号就精准;但ORM的缺点是反馈稀疏,意思就是反馈信号少,这个很直观,哪怕你推导过程写10页纸,反正最后只有一个反馈信号。(OpenAI 训练大模型时RLHF阶段的RM模型,就属于ORM) PRM的含义是训练一个模型,能对中间每个过程都给予反馈信号,这样在推导过程中错在哪个步骤就很清楚,不用等到最后,所以它的特点是反馈信号丰富不稀疏。但问题来了,要训练PRM就需要有每一步有标注的数据,这么多标注信号怎么来?常规做法是靠人工标注,比如去年很火的OpenAI的PRM工作“Let’s Verify Step by Step”,就是靠人工标注了80万中间步骤反馈信号的数学题推导过程,而且证明了PRM效果要比ORM好。所以,PRM的优点是反馈多效果好,但是训练数据制作成本太高,一般人做不了。 ![](https://pic1.zhimg.com/v2-974a44bd62e5cfc9c90e8e222c4b67a8_b.jpg) 那有没有相对成本低的方法来做给每一步做标注呢?有。我目前看到比较好的做法是这么做的(参考上图):假设我们手上有一批有完整推导过程的数学题,可以先把第一个解题步骤抄过来,然后用MCTS树靠搜索的方式去继续往后推导,可以从这个步骤出发做多次推导,其中有些推导过程会得到正确答案,有的结果错误,原则上从这个步骤出发的多次推导中,通向正确答案比例越高,说明抄过来的这步推导过程对于得到正确答案比较重要,则可以标注一个高分,然后可以抄过来第二个解题步骤,依此处理…..这样就能自动给每个推导步骤做质量标注。然后用这种数据去训练PRM模型,PRM就能给每个推理步骤打分。但很明显,通过这种数据训练出来的PRM打分的精准性肯定比不上ORM。 **那么OpenAI o1在训练过程会采用ORM还是PRM呢?我估计两者都会用。ORM精准,PRM反馈丰富,两者各有优点,结合起来效果应会更好。**另外,o1的官网提到了“Our large-scale reinforcement learning algorithm teaches the model how to think productively using its chain of thought in a highly data-efficient training process.”,这里的“data-efficient”,应该指的就是PRM。 ### AlphaZero的基本原理 这里会首先介绍下AlphaZero的基本工作原理,我们后面给出的Reverse-o1方案,核心是如何将RL和LLM融合起来,大框架主要参照AlphaZero的主体思路,所以这里做些说明以方便后续内容的理解。 2017年年底AlphaGo的棋类游戏通用版本Alpha Zero问世,不仅围棋,对于国际象棋、日本将棋等其他棋类游戏,AlphaZero也以压倒性优势战胜包括AlphaGo在内的最强的AI程序。 ![](https://pic3.zhimg.com/v2-5e38775f5c3c0a7dcf6c2898a7113ff4_b.jpg) AlphaZero从技术手段上和AlphaGo相比并未有本质上的改进,主体仍然是MCTS蒙特卡洛搜索树加神经网络的结构以及RL训练方法,但是技术实现上简单优雅很多(参考上图)。主要改动包含两处:一处是将AlphaGo的两个预测网络(策略网络P和价值网络V,策略网络P主要用于预测在当前状态 ![S](https://www.zhihu.com/equation?tex=S) 下,执行每个行为 ![a](https://www.zhihu.com/equation?tex=a) 也就是可能的落子位置的胜率,即函数 ![P(S,a)](https://www.zhihu.com/equation?tex=P%28S%2Ca%29) ;而价值网络V主要评估当前状态 ![S](https://www.zhihu.com/equation?tex=S) 最终能够赢棋的整体概率,即函数 ![V(S)](https://www.zhihu.com/equation?tex=V%28S%29) ,是一个在比如0到1之间的数值, ![V(S)](https://www.zhihu.com/equation?tex=V%28S%29) 数值越大,从当前局面 ![S](https://www.zhihu.com/equation?tex=S) 出发赢棋概率越高。)合并成一个网络,同时产生两类输出 ![P(S,a)](https://www.zhihu.com/equation?tex=P%28S%2Ca%29) 和 ![V(S)](https://www.zhihu.com/equation?tex=V%28S%29) ;第二处是网络结构从CNN结构升级为ResNet。AlphaZero完全放弃了从人类棋局来进行下棋经验的学习,直接从一张白纸开始通过自我对弈的方式进行学习,并仅仅通过三天的Self Play便获得了远超人类千年积累的围棋经验。 AlphaZero结合了MCTS和RL,MCTS是主体,RL起到了加速搜索速度的作用。在Self Play过程中(参考上图a),对于某个AI棋手,它会用MCTS搜索,对当前状态 ![S](https://www.zhihu.com/equation?tex=S) 下各个可能落子(Action)都去搜一下,每个位置经过搜索之后,能获得每个落子位置赢棋的概率分布 ![\pi](https://www.zhihu.com/equation?tex=%5Cpi) ,从中选择概率最大的位置来落子,之后另一个AI棋手也采用类似的思路去落子……这么一来一回直到分出胜负( ![z](https://www.zhihu.com/equation?tex=z) 指出谁是胜者,Reward信号)。 到目前为止,貌似我们还没看到神经网络结构的作用,其实它主要是在MCTS搜索某个落子位置的时候发挥作用。因为从某个落子位置出发开始搜索,可搜索空间实在太大,靠暴力搜索肯定行不通,所以策略网络 ![P](https://www.zhihu.com/equation?tex=P) 和价值网络 ![V](https://www.zhihu.com/equation?tex=V) (AlphaZero已经融合为一个网络了,分开说主要是为了方便阐述)的作用主要是引导搜索过程,优先搜索赢面大的路径,剪枝掉赢面小的路径,这样来增加搜索效率。 在搜索过程中神经网络参数固定不动,当一盘棋下完最终分出胜负,知道胜者后,可针对下棋路径上经过的每个状态 ![S](https://www.zhihu.com/equation?tex=S) 产生对应的训练数据。对于策略网络 ![P](https://www.zhihu.com/equation?tex=P) 来说,学习目标是MCST搜索获得的当时状态 ![S](https://www.zhihu.com/equation?tex=S) 出发落子概率分布 ![\pi](https://www.zhihu.com/equation?tex=%5Cpi) ,而对于价值网络 ![V](https://www.zhihu.com/equation?tex=V) 来说,学习目标则是“最后的胜者 ![z](https://www.zhihu.com/equation?tex=z) 获胜概率大”这一事实。然后根据这些训练数据就可以调整神经网络参数,这样它在下一局对弈过程中能力会更强(可以看出AlphaZero的奖励模型是ORM)。这样通过无限重复的对弈过程,AlphaZero能力就越来越强。 应该意识到:对于AlphaZero来说,其本质其实还是MCTS蒙特卡洛树搜索。围棋之所以看着难度大难以克服,主要是搜索空间实在太大,单纯靠暴力搜索完全不可行。如果我们假设现在有个机器无限强大,能够快速遍历所有搜索空间,那么其实单纯使用MCST树搜索,不依靠RL,机器也能达到完美的博弈状态。AlphaGo Zero通过自我对弈以及深度增强学习主要达到了能够更好地评估棋盘状态( ![V](https://www.zhihu.com/equation?tex=V) )和落子质量( ![P](https://www.zhihu.com/equation?tex=P) ),优先选择走那些赢面大的博弈路径,这样能够舍弃大量的劣质路径,从而极大减少了需要搜索的空间,自我进化主要体现在评估棋面状态( ![P](https://www.zhihu.com/equation?tex=P) 和 ![V](https://www.zhihu.com/equation?tex=V) )越来越准,所以能越来越快地找到赢面最大的落子位置。而之所以能够通过自我对弈产生大量训练数据,是因为下棋是个规则定义很清晰的任务,到了一定状态就能够赢或者输,无非这种最终的赢或者输来得晚一些,不是每一步落子就能看到的。 ### LLM与RL融合后的Reverse-o1模型网络结构 ![](https://pica.zhimg.com/v2-43db16e22bb757833665c241c6c54946_b.jpg) o1和下棋不同的一点是:除了RL,即使是Hidden COT,在背后也是靠一个Token一个Token输出的,LLM一定还是其中的主体结构,但RL肯定也需要一个网络结构去调整模型参数,来逐步学会内部的思考过程。所以,我们首先面临的问题是:**如何融合LLM和RL两个模型,来获得一个同时混合LLM和RL两者功能的完整网络结构**。 上图给出了一个我设想中的结构:主体仍然是基于Transformer的LLM模型(Dense或MOE都可以,mini版本应是Dense结构),当输入“问题+已经生成的部分Hidden COT”(也就是由连续Token序列组成的当前状态 ![S](https://www.zhihu.com/equation?tex=S) )之后,经GPT网络对当前状态进行编码。在LLM 输出Head之上,可分化出两个子结构:一个用于常规的LLM 预测Next Token,这与通常的LLM一致;在Head之上,可以搭建RL模型结构,这里参考了AlphaZero的思路,一个网络两个输出。比如可以用FFN网络结构,一方面输出策略网络 ![P](https://www.zhihu.com/equation?tex=P) 结果( ![P(S,a)](https://www.zhihu.com/equation?tex=P%28S%2Ca%29) ),代表在当前状态 ![S](https://www.zhihu.com/equation?tex=S) 下,下一步Action“思考因子”的分布概率 ![\pi](https://www.zhihu.com/equation?tex=%5Cpi) ,某个“思考因子”概率越大,则下一步这个Action被选中执行可能性越大;另外一方面会输出价值网络V结果( ![V(S)](https://www.zhihu.com/equation?tex=V%28S%29) ),代表当前状态 ![S](https://www.zhihu.com/equation?tex=S) 通向最终正确答案的概率大小,概率越大说明当前状态 ![S](https://www.zhihu.com/equation?tex=S) 质量越高,意味着目前已输出的这部分Hidden COT整体质量较高。 到了这一步,当Hidden COT处于某个状态 ![S](https://www.zhihu.com/equation?tex=S) 的时候,经过网络可知下一步应该采取什么动作,也获得了当前状态 ![S](https://www.zhihu.com/equation?tex=S) 通向成功答案的概率。但目前仍缺少一部分内容,即在已知下一步“思考因子”行为后,对应的Hidden COT 一系列输出的Tokens。 一种简单的方法是用LLM head之上的LLM部分持续输出后续Tokens(有人工数据训练的时候,可以用PPO来增加对应Token的输出概率),在输出后续Token的时候并不考虑RL的输出,直到LLM输出到 ![&lt;{Act_i}-End&gt;](https://www.zhihu.com/equation?tex=%3C%7BAct_i%7D-End%3E) 之后,再去判断RL的输出选择动作…..持续此过程,结合LLM和RL输出Hidden COT的模型就能运转起来。 ![](https://pic3.zhimg.com/v2-2672062a4f732da8188fc618e7acf4a6_b.jpg) 前文我们分析过,o1大概率会使用过程奖励模型PRM,还有,它可能是由多个模型构成的。在这两个约束条件下,可以如此改造上面的模型结构(参考上图):在已知下一步“思考因子”后,不由主模型来生成后续Tokens,为了增加后续生成COT的质量,可采用Best-of-N Sampling的思路,由多个复制的Reverse-o1模型(不同副本可以设置不同的温度参数,增加输出的多样性)各自给出一个Token序列,然后由离线训练好的PRM作为评委打分,选择得分最高的Token序列,作为本次“思考因子”后续的输出Tokens。选出最佳内容后,可同步给主模型,主模型执行一次类似Prefill的操作,即可同步输出最佳内容,然后开始下一轮的输出……可如此办理,这么做明显生成的Token序列质量会更高。 ### MCTS树搜索下的Reverse-o1 ![](https://pic4.zhimg.com/v2-64aaba6a01f83cf8a7ef58dc15e3c927_b.jpg) 我们仿照AlphaZero,引入主体结构MCTS,它的运行流程如下(参考上图):当用户输入问题后,Reverse-o1使用MCTS树,对于每个可能的“思考因子”进行搜索,在搜索时会用策略网络 ![P](https://www.zhihu.com/equation?tex=P) 和价值网络 ![V](https://www.zhihu.com/equation?tex=V) 来快速寻找最优搜索路径,这样得到所有“思考因子”的概率分布pai,概率数值越大则代表采取这类思考通向正确答案概率越高。之后选择概率最大的“思考因子”作为当前状态下的行为,并如上节内容所述,由Reverse-o1生成针对这个行为下的COT Tokens片段。将COT Tokens片段并入用户问题,形成新的状态……依次往后走,直到产生问题的答案,和标准答案对比后,要么对要么错,由此得到对应的Output Reward。 ![](https://pic4.zhimg.com/v2-f5906db6b6866eae8ec98992cc4f4d43_b.jpg) 仿照AlphaZero,从状态 ![S](https://www.zhihu.com/equation?tex=S) 出发,搜索某个“思考因子”指向正确答案的概率时,以 ![max(Q+U)](https://www.zhihu.com/equation?tex=max%28Q%2BU%29) 的方式寻找最优下一状态 ![S&#39;](https://www.zhihu.com/equation?tex=S%27) ,而 ![Q](https://www.zhihu.com/equation?tex=Q) 函数与价值网络 ![V(S)](https://www.zhihu.com/equation?tex=V%28S%29) 正相关, ![U](https://www.zhihu.com/equation?tex=U) 函数与策略网络 ![P(S,A)](https://www.zhihu.com/equation?tex=P%28S%2CA%29) 正相关,所以 ![max(Q+U)](https://www.zhihu.com/equation?tex=max%28Q%2BU%29) 的含义是通过价值网络和策略网络的指引,来寻找高质量的搜索路径;当搜索到叶结点的时候,会进行节点扩展,并用策略网络和价值网络估算初始化相关搜索参数,之后由低向上更新最优路径上所有状态对应的 ![Q](https://www.zhihu.com/equation?tex=Q) 函数。当每个候选的“思考因子”经过一轮搜索后会得到所有行为的分布概率 ![\pi](https://www.zhihu.com/equation?tex=%5Cpi) ,完成搜索步骤。O1搜索时与下棋不同的地方在于:如果要往下一状态转移,还需要根据当前选到的行为,产生对应的Hidden COT tokens,这个步骤可由上文讲述的Best-of-N Sampling策略来完成。 当从问题开始,逐步生成Hidden COT片段后,走到答案阶段,会获得Output Reward,完成一次通过中间环节到答案的MCTS搜索过程。如果答案正确,可设置Reward=1,答案错误可设置Reward=-1,在此基础上针对走到答案所经过的所有中间状态 ![S](https://www.zhihu.com/equation?tex=S) 构造训练数据,来训练策略网络P和价值网络V,策略网络的学习目标是对应状态MCTS搜索到的行为概率分布 ![\pi](https://www.zhihu.com/equation?tex=%5Cpi) ,价值网络的学习目标是Output Reward。 除此外,对于搜索过程每个被选中“思考因子”通过Best-of-N Sampling得到的对应Hidden COT tokens序列(也可以拿到PRM赋予这个tokens序列对应的Process Reward分数),则可以利用PPO(PRM的Reward作为PPO的Reward)来调整LLM模型参数,使得LLM之后在遇到这个“思考因子”后,提高这些Tokens的生成概率。 到目前为止,差不多可以结束o1的整个逆向工程之旅了,前文提到的一些约束条件(o1应该由多个模型构成、应该用了某种或者某几种树搜索、RPM和ORM应该都会用等)在设想中的Reverse-o1中基本都得到了体现。 但是,我个人觉得还有一个问题值得深入思考:“思考因子”是必须存在的吗?毕竟这需要靠人工去归纳人类的潜在思维模式,仍然有比较强的人工痕迹存在,而且会增加人工标注数据的成本。这个问题我确实思考了好几天,结论貌似是:整个框架还可以是这个框架,不用引入“思考因子”或者把“思考因子”改为“隐式思考因子(Hidden Thought Factor)”应该也是可以的,因文章已经太长,解释起来有点复杂,这里先略过。 来源:知乎 www.zhihu.com 作者:[张俊林](http://www.zhihu.com/people/zhang-jun-lin-76?utm_campaign=rss&amp;utm_medium=rss&amp;utm_source=rss&amp;utm_content=author) 【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 [点击下载](http://daily.zhihu.com?utm_source=rssyanwenzi&amp;utm_campaign=tuijian&amp;utm_medium=rssnormal)

2024-09-25 03:23:03 · 1次阅读
 
 
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156