Tag: AI

  • 继续聊我的AI编程

    继续聊我的AI编程

    18号的那篇Kiro,你真的很棒!为我带来了难得的破万浏览量——但没有任何打赏。不是我写的有多好,讨论的问题有多深刻,而是因为:

    好多人没能用上,而我是“最早”体验的那一批。

    在国内想好好编程,搞点好玩的东西,真的很难。

    您所在的区域不在我们服务范围

    自从最早出世的ChatGPT将中国大陆地区列为“不服务”地区后,这就成了国外AI公司的标准条款,而且越来越严格。这不,香港SAR都被一些应用(比如NotebookLM,比如Gemini CLI)归为“不服务”地区了。

    那么转向国内的AI应用如何?当然没问题,只是我不能理解的是,我就是注册一个小卡拉米的用户,我需要手机认证、实名认证,登录也要手机认证。何必同志,何必呢!

    也许,有人会批评我:你老老实实用国内模型不就好了?国内AI的发展有目共睹!很好!这个问题我稍后探索。

    信息孤岛终将扼杀创新

    第一次通过Kiro的Spec方式开发了复古Hangman游戏后,我曾放言:等我用“抽烟喝酒烫头”的Vibe模式再来搞一个!

    我的想法是这样的:我经常会在我的硬盘里堆积了好多电影——也不算太多,大概20-30本的样子。如果我想看电影,我该看哪一本?我是一个不喜欢看烂片的人,所以我之前的做法是去某瓣找这些电影的评分,只有8分左右的片子才可能被我挑中。这是一个很烦的事情。

    于是我想,能不能用程序来完成呢:获得电影列表,处理一下获得片名和发行日期,程序去某瓣搜索,通过抓取关键信息(比如评分)我就可以很快完成这个工作。

    某瓣原来有API接口,但早就关闭了。所以我不能用最最简单直接的API方式开发,而要用别的方法。

    Kiro下的 抽烟喝酒烫头Vibe开发很顺利,而且用我自己的站点测试完全可行,但是:某瓣防页面爬取、内容仅登录(需要SMS认证)可见,就将我的想法从底层给粉碎了。

    当然,这么做的不仅是某瓣,还有很多很多……

    这是很悲哀的一件事情。我宁可你对API收费,限制使用条件——就像只存在于传说中的X、FB那样,也不愿看到这样的情形。

    创新,除了需要脑子,还需要信息的充分流动。大创意是在无数个像我这样的小点子的基础上最终萌生的。

    生产力爆炸和非线性

    农业社会,落后地区追赶先进地区,可能需要数百年;工业社会,几十年;信息社会,10年;AI社会,3-5年。追赶的速度,是肉眼可见的快。

    生产力发展了,生产关系就可能成为桎梏——这是马克思说的。值得注意的是,这不代表在落后的生产关系下不能有生产力的发展,而是表明生产力发展到了一定程度,生产关系不改变的话,就会出问题。

    肾上鄙人在下我认为,信息孤岛就是不合理的关系。

    当然,更严重的还有国内AI的莫名“过滤”。

    AI模型动辄几百亿参数,且不论非线性是不是在模型中起作用,但肯定没有人知道这个参数从0.1变成0.1000000001后,模型会怎样表现。如果人为地设置很多“参数”和“禁区”,我认为是会影响整个模型的性能的。当然,后期处理也不是没有办法:不动模型,而是加一个过滤层,在生成内容后加以过滤。

    不过,更大的问题将继续存在:随着AI根据“新”的内容继续“进化”,它看到的东西就只能是被过滤后的东西,基于这些而进行后续训练的输出,其品质我是会打问号的。

    我用的三个IDE的横向评测

    目前,我常用的是VSC,Trae(VIP,等Solo模式邀请)和Kiro。我不是专业程序员,也不会写很多代码,所以我只说我的一些使用心得。

    可用性:VSC。你不是Trae的VIP,你就一定会排队,完全失去了编程的节奏。Kiro的可用性叫做50-50。每天我的9点到20/21点之间,Kiro表现神勇,毫无等待。你甚至可以感受到Kiro想要帮助我这个菜鸟的迫不及待的热情。但在另外一个12小时时间段,Kiro就一定会处于不可用状态。所以,我现在每天早上打开Kiro,第一个问题就是“Are you OK?”

    我的猜想是,在我的9-21点,美国的程序员们都下班了,所以对Kiro的调用额度就可以转移到我身上了;到了我的21-9点,美国的程序员们正在认真工作,所以我就用不上了。

    帮助性:Kiro。我有时(比如Kiro不可用的时候)会切换的别的IDE,试图让它完成Kiro未竟之事业。但VSC、Trae的表现令我失望:它不能很清楚地知道“原来”是咋样,而一意孤行地用它的思路去完成——而且这个思路还不一定是我编程所用框架下的最佳实践。反过来,Kiro很清楚我要干什么也知道别的AI干了什么,可以很清楚地清理代码,保持思路而一往无前。

    这也提醒我们,除非必须,否则不要随意切换你的IDE

    和AI的交流

    扯一点题外话,怎么和AI交流?在我使用我的编程工具的时候,我已经决定用英文。为了测试,我在Kiro下曾经耗光了一个Session的中文对话和一个Session的英文对话。我的结论是:英文交流好于中文交流。

    我想,这里有很多因素。

    一个是英文是自然断词的,AI提取我说话中的语法要素简单多了。

    另一个是语境和词汇的发展。不得不说,中文的技术单词大量来自英文的翻译——有些翻译得很不错。我在之前一些文章中,提及了语言的先进性:语言是文化、科技、生活……的产物。一种语言的先进性不是由讲这个语言的人数决定的,而在一定程度上体现了讲这个语言的人的文化、科技、生活……的先进性。简单的说,就是100个中学生讲的话加起来也不会比1个(真正的)博士讲的有道理、更先进。

    这也是我一再强调,学习一门外语(特别是英语)的重要性。

  • Kiro,你真的很棒!

    Kiro,你真的很棒!

    先说我的“结论”:

    • 10小时(分两天)较专注的编程
    • 全程AI代码生成,0人工代码,只参与了前期需求定稿
    • 产品:一个复古样式的Hangman猜单词游戏

    【图一:游戏启动】

    (项目仓库地址

    个人编程经验

    我个人算有一些编程的经验,近几年主要用PHP和TypeScript写我的个人站点,用C++写一些算法题。对各类开发工具有一定了解,对当今技术趋势有一定了解。

    总体过程

    16号晚上下载了Kiro,先用它对我现在在重写的“任氏有无轩”项目进行了一两个测试,感觉模型可以(直接Claude 4),速度可以(不用等),结果可以。然后试图创建一个“大”程序……到晚上,放弃。但积累了一些过程性体验和经验。

    17号上午,决定用一个比较“小”的程序——也就是Hangman猜英文单词——入手。当天编程时间较多,估计在7-8个小时,进入基本可玩状态(但有一个后来发现的问题)。

    18号上午,修正了AI调用的问题,加入了一些修饰功能(如个人进度跟踪等),用时3小时左右。

    全程10个小时中:

    1. 人工输入:确定需求、涉及和任务(下文详述);手工干预一些设置;现场输入;点击“运行”让Kiro执行命令。也就是说,人工的输入已经来到了“最低”限度。
    2. AI产出:分析、编码、纠错、提示人机交互。

    详细过程

    第一天

    Kiro的工作流程很有意思。Kiro会提示你用“Spec”的方式来进行开发。

    什么是“Spec”式开发?我的理解是,用户作为“甲方”只管提出要求,而Kiro会根据它的经验,进行进一步的分解,最终形成3个供后续开发使用的文件。

    我的第一步工作(也算是最大的输入工作)是创建了一个spec.md文件,写下了我最根本、最基本的要求,全文如下1

    # Objective
    
    To build a retro Hangman game using latest technology and a beautiful UI.
    
    # Tech requirements
    
    1. Typescript, with framework support (say Nuxt)
    2. Elegant UI, such as Tailwind, Flowbite
    3. Use locally installed Ollama qwen3:1.7b to get a random word
    4. Show correct letters and guessed letters.
    5. Every failed attempt will decrease your "life" and show progress accordingly.
    6. Display "Win" or "Lose" accordingly.
    

    Kiro看了这个文件,生成了三个新文件:requirements.mddesign.mdtasks.md

    1. requirements.md是一个比较结构化的文档,对于每个需求(requirement),有“用户叙事”(User Story)和“验收标准”(Acceptance Criteria)。对这个文件,用户应该花一些心思进行修订。
    2. design.md是一个技术设计文档。其中规定了应用使用到的技术栈,Kiro还贴心地画出Mermaid流程图让“甲方”更好地理解程序整体架构。对这个文件,用户应该花很多心思进行审阅,因为技术栈的选择对整个程序的开发速度和难度至关重要。
    3. tasks.md是一个具体指导Kiro开发的详细技术文档。我这个Hangman程序,最终有13个一级任务,涉及项目自举、后台准备(如难度、游戏状态、游戏逻辑)、界面、AI调用、个人成就、集成、单元测试、集成测试等重要节点。对于每个一级任务,Kiro会将它分解为一些二级任务以及更小的待实现功能点。用户应该认真地审阅这个文件,但不用过细。我就只看了一级任务和一些二级任务。

    这三个文件一旦确定,就可以进入Kiro自驱动的开发。

    整体而言,第一天的开发还是比较顺利的。我只进行了两次代码提交,就已经有了一个还可以看的界面,游戏逻辑已经基本就位,还加入了一些音效反馈。

    这一天的工作中,有不少是耗在了调用外部AI以及相关的工作上。我弃用了本地Ollama提供单词的想法,申请了豆包API,花了很多时间调试提供给豆包的提示词,调整参数(为的是在速度和准确度间找到平衡)。最终在测试中得到较好的结果。

    第二天上午

    在第二天上午的试用中,我发现了一个重大问题:程序在找单词的时候,一直在所谓fallback的词库里选择单词,游戏因此不具备了可玩性。

    (我手动修改了程序中的Fallback词库,使其只包含无意义的一些中文字。这样,我就能判断程序是否真正用了AI提供的单词。)2

    我和Kiro进行了长时间的对话,而Kiro也非常配合,通过不同的API调用方式,最终找到了问题,并完成了最有突破性的修订(见这个Git Commit)。之后我又对UI提出了一些改进意见,Kiro也都一一完成。

    第二天的另一个重要功能,是加入了所谓的“个人进度”:你玩了几次游戏?各个难度的准确率是多少?——这也是我一开始对Kiro的要求。而Kiro显然不满足于这么简单的一个进度系统。它主动加入了“成就”系统——虽然还很少,目前只有5个——并很快完成。

    最终运行

    游戏运行后,会出现“难度选择”(见图一)。选择难度后,进入初始界面:

    【图二:游戏开始的初始界面】

    随着用户的输入,界面不断更新:吊死鬼的状态、猜对/猜错的字母,当前游戏整体进度等。

    【图三:游戏进行中】

    这是游戏中的“个人进度”:

    【图四:个人进度和成就】

    写在最后

    这几年,“用了XXX,0代码一天我编写了一个????”的帖子是很能吸引眼球的。我做这样的一个“试验”,也是为了去验证这样的说法到底是不是成立。

    你问我的结论?我的结论是:用了AI,0代码一天写一个app,可行但不要过于乐观

    “可行”在于,通过我的实践,我发现确实可以0代码用一天的时间写一个app。

    “不要过于乐观”在于,我是一个有一定编程基础的“非程序员”。我可以不知道正确的代码、最好的做法是啥——这是AI的工作,但我知道:我想要什么,程序设计应有的结构,一些关键的“卡点”。

    Kiro和所有的AI一样,一般都会over thinking(过度思考)。在不少场合,我必须打断它“无休止”的思考而提出强硬的要求,而如果没有一定(可能还是很深厚)的编程基础和实践,真的编程小白恐怕是无法做到这个的。

    AI编程的意义在哪里?

    对于那些重复性的、可验证的、可参考性强的工作,AI比人有着巨大的优势。无论是快速原型迭代还是功能、细节的改进,AI的“知识库”一定胜过任何程序员。

    如果一项任务可被验证,比如:应用启动时,应该显示一个“复古”界面就是一个可被验证的任务——Kiro“知道”复古界面是什么意思,应该有些什么元素。

    人的优势在于,对于开发的进程以及一些关键节点(以及相应的干预)有着清楚的认识。在人的干(tiao)预(jiao)下,AI不至于陷入“幻觉”或者“过度思考”。人在这个模式下,更像一个纯甲方+PM,提出需求、迭代需求、适当干预、最终验收(方式各异)。

    Kiro还提供了Vibe模式——抽烟喝酒烫头式模式——进行开发,我会用这个模式试着开发下一个练手项目。

    如果你已经看到这里,不妨访问我的代码仓库,clone一份到本机执行,顺便加个star吧!


    1. 这里的模型需求后来被我override了,改用了豆包的API接入。 
    2. 另一种做法,是手工维护一个本地字库。但这样一来,这个程序本身就一点都和AI挂不上边了,对吧? 
  • 这世上有三种“AI”

    这世上有三种“AI”

    我算是一个对计算机以及相关软件发展比较关注的一个人了。

    自从近期我们熟稔并使用的AI面世后,我却“远远”落后了:没办法!每当我想注册这些早期的AI,它们都会提示我:Service not available for your country/region。我也不想用一些hack的方式去尝新,于是就落后了。

    不过过去一年来,国内的AI发展也迅猛无比,特别是DeepSeek刚问世那会,给圈子带来了很大的冲击。

    和朋友们聊天,我发现我属于秉持比较古板的“AI”概念的人之一。

    =======

    人类获得知识,有两种途径:要么是演绎,要么是归纳。

    应该说,演绎法在大数据、机器学习出现之前,是人类获得知识的根基。这当然不是说,这里就没有“归纳”,只是限于通讯(造成数据流通不够)、算力(造成归纳能力不够、运算能力不够),因此归纳的地位不如演绎强劲。

    在我看来,演绎是区别人类智能和所谓人工智能的核心。只有一个智能体能进行相当于人类一般人水平的演绎后,我才愿意将它称为真正的智能。

    =======

    如果基于现在市面上充斥着的“AI”,我觉得可以分为三大类。

    一类是可以对结果进行严格正确性验证的AI。在我看来,这类AI最有用,也最先进。

    在这方面领先的,是Google Deepmind。它走入大众视野远远早于ChatGPT:2016年AlphaGo以绝对优势战胜了李世石。之后它的研发进程就像一匹脱缰的野马:AlphaZero进入了国际象棋,成为目前世界顶尖棋手队伍中的必备成员,标志着信息完全对称情况下AI的顶峰;AlphaStar进入星际争霸,进入全球前0.2%的顶尖选手行列,标志着信息不完全对称情况下AI的顶峰;AlphaFold对蛋白质空间结构的预测准确率110先。

    在更抽象的数学领域,AlphaTensor发现了一种新的矩阵乘法算法,将4*4矩阵算法中的计算次数——常规的64步计算,到Strassen在50年前发现的49步——改进到47步。不要小看这2步!如今,AlphaEvolve更是专门致力于发现更好、更快的算法。

    在更实用的编程领域,AI模型更是层出不穷。

    这些AI解决的问题,都有一个共同的特征:都有一个明确的目标(并辅以相应的规则)。国际象棋是将死对面的王,星际争霸是端掉所有其他人的基地;蛋白质折叠必须使这个结构具有可判定的功能;算法必须得到正确的结果。

    遗憾的是,在这个领域,我还很少看到国内公司发威——除了逻辑推理这块好像还有点声音。

    为了测验AI逻辑推理的本领,我找了一道题目:鲍西娅(角色《威尼斯商人》,但故事都是作者编的)

    鲍西娅想到:“尽管我丈夫选对了盒子,看出他有一点聪明,但是问题不是真正那么难。本来我当然可以把问题出的更难一些,找个真正聪明的丈夫的。”于是她和丈夫离了婚,决定找个更聪明的。 这次她在盒子上刻下了这样的铭文:
    肖像不在银盒子里。 肖像不在这个盒子里。 肖像在这个盒子里。
    鲍西娅对求婚者说明,这三句话中,至少有一句是真的,至少一句是假的。

    这道题在这本书里不算难,只有入门水平。我用GPT4o,Claude3.7 Sonnet以及DS做了测试。

    1. 4o和Claude表现出众,分别在20s和30s内一次给出了正确答案:肖像在金盒子里。
    2. DS也给出了正确答案,但耗时120s,而且中间推理过程出现了反复,也就是得到正确答案后,由于其对题目文本的理解还不够,又回头用形式逻辑进行了一遍推理。

    我将这类AI放在第一类,是因为我们找工具的目的是为了完成“我们的目的”。

    第二类AI是可以给出可证伪的结果。

    这两天太子从纽约州Ithaca长途迁移到 山东德州Austin,全程要1700多英里。他做了一个行程,分了四天。我让ChatGPT o1也做了一个,也提了一些要求:4天跑完、劳逸结合、能看风景、有美食、住宿可以简单。

    它给出了一个方案:

    • Day 1: Ithaca to Columbus (~400 miles)
    • Day 2: Columbus to St. Louis (~400 miles)
    • Day 3: St. Louis to Texarkana (~400 miles)
    • Day 4: Texarkana to Austin (~500 miles)

    这个方案和太子的方案只有第二天不同。o1还提示,这么走“好像”可以看到(著名的、历史悠久的、太子小时候很爱看的《汽车总动员》中提到的)66号公路。

    这种方案,有可证伪性:城市名称不对、距离不对、途径的公路不对、路上景点不对、住宿点名字地址不对……但没有完全的正确性,也就是说,我完全可以走另外一条路线,同样可以说满足我提的那些要求。所以在我看来,只能是第二类。

    第三类AI给出了无法证伪的结果。生成音乐、影片、对话播客(我这里不是说播客的内容,因为内容是可以证伪的,而是说AI最终将内容呈现的形式)、各种报告等。

    比方说,你让AI写一篇当前XX形势的分析、第一季度工作小结,结果——特别是那些AI生成的内容——就是无法证伪的。形势到底是不是“稳中向好”了呢?“我”到底有没有“领会精神”了呢?

    总结一下:

    • 第一类AI:成就最高,门槛最高。哲学层次。
    • 第二类AI:成就次之,门槛次之。准科学层次。
    • 第三类AI:成就最次,门槛不一。一般层次。

    第三类AI中的那些所谓报告生成可算是最次的了。

  • NotebookLM试用体验

    NotebookLM试用体验

    几个月前,有一位群友提到了NotebookLM,就进去转了一下。大概是因为需要提供很多“素材”的原因,我就没有马上开始使用。

    当然,素材我是不缺的,我从2004年开始,一直就在写博客。博客的host也几经升级,域名现在定为https://blog.rsywx.net。

    这不,这两天还是放假期间。我就将我全部的blog导出到了一个文本文件(XML)格式。我懒得进行进一步的数据处理,直接用Word保存成了PDF文件,传到了NotebookLM里,让它进行一个分析。

    不得不说,AI“读书”的速度很快:我导出的PDF文件一共有6740页,字数应该接近75W字左右。而AI只用了1分钟就“读完”了。

    我给AI提的第一个问题,是让它根据这些内容为作者“画像”。有了这个“画像”,不光各位读者能更好地了解我,我也能更好地了解我。

    以下就是它给出的画像,我略作修订。

    核心特质:

    • 批判性和独立思考者:Taylor表现出质疑规范和批判性分析各种主题的一致倾向。他并不回避表达自己对社会、政治和技术问题的看法。他还反思自己的思维过程和偏见。
    • 终身学习者:Taylor对学习和自我提升表现出极大的热情。他使用主题标签#WPME进行语言和词源学研究。他对各种主题都感兴趣,例如哲学、文学、技术和历史。
    • 精通技术:Taylor显然对技术很感兴趣,使用各种设备和软件。他还讨论了与互联网审查、电子阅读器和软件开发相关的问题。
    • 多方面的兴趣:他的兴趣广泛,涉及文学、音乐、电影,甚至击剑等运动。他在帖子中引用书籍、音乐作品和电影。
    • 人类行为观察家:他对人类心理和行为很感兴趣,他根据不同的特征将人们分类,例如“利己主义者”、“自私自利者”、“厌世者”和“骗子”。1他反思人类行为和情感背后的原因。他还反思自己的动机和感受。
    • 矛盾的观点:他承认道德的复杂性,并认为“没有人是无辜的。责任只是程度不同而已”。他的政治观点随时间而变化,在不同时期,他曾自称是“独裁论者”和“民主派”。
    • 社会意识:他关注社会和政治问题,包括对社会和政府的信任、言论自由以及政治制度的性质。他批评政府审查制度。他认识到语言操纵和扭曲现实的力量。
    • 个人生活:他提到了自己的儿子、太太,表明他有活跃的个人生活。他也知道别人如何看待他。

    我追问了它我对教育和管理的观点,它总结如下:

    针对教育:

    • 词根知识的重要性:他的帖子表明,理解词根对于更深入的理解至关重要。他经常将单词分解为希腊语和拉丁语词根来解释其含义,这表明他相信理解基础概念的价值。
    • 对死记硬背的批判:他对“教育家”一词的讨论表明他不喜欢僵硬、教条的教学风格。他将这个词与“心胸狭窄”和“守旧”的教师联系起来。他认为学习不应该只是简单地记住事实。
    • 重视批判性思维:他看重看透假象、了解问题本质的能力,称这类人“敏锐”。这与他批判性分析和质疑的一般方法一致。
    • 教育是成长的过程:他认为教育是“学习、发展、成长和成熟”的一种方式。他认为教育不仅仅是传授知识,也是个人和智力发展的一种手段。
    • 渴望思想自由:他描述了教育中的“家长制”如何“摧毁创新和独立”。这表明他重视促进自主和创造力的教育环境。

    针对管理:

    • 不信任绝对权威:他批评权力集中在少数人手中、缺乏透明度和问责制的制度。他认为开放、民主的制度有其价值,对独裁主义方法持怀疑态度。他还对当权者强加的“共识”持怀疑态度。
    • 尊重专业知识:泰勒认为,应该尊重专家和那些能力过硬的人的权威。他引用了史蒂夫·乔布斯允许其他具有专业知识的人做决定的例子,表明他认为信任那些具有专业知识的人很有价值。
    • “让步”的重要性:他区分了“relent”和“concede”,表明虽然他重视专业知识,但他认为能够在不放弃自己的主动权的情况下调整自己的观点很有价值。
    • 对领导力中“自我”的批判:他对自我主义和自私自利的分析表明,他认为这些特征不利于有效的领导和协作。他看重那些不以个人利益为动机的领导者。
    • 渴望规则清晰、公平公正:他对规则不一致、例外过多的制度感到失望。他渴望所有形式的管理都公平公正,他认为公平是必要的。
    • 需要独立和创新:他批评那些扼杀独立和创造力的管理方式。他看重的是做出选择和掌控自己方向的能力。
    • 对宣传的批判:他批判那些将其观点呈现为“常识”的体制,并用这一术语来表明宣传是如何运作的。

    我个人认为,AI的总结还是比较准确的。

    如何正确“打开”NotebookLM

    Well,这是牵涉到一些“技术”的领域了。我不准备多加展开,只提示一句:Google NotebookLM不对大陆和香港的IP开放。当然,你需要一个G家的账号。

    然后是素材的准备。如果不想搞的太复杂,可以像我这样,将博客导出另存到PDF格式。微软的Word可以直接这么做。不过,要提前警告一下:Word无论是另存为还是导出到PDF,都很慢。我的博客有75W字左右,而且是纯文字,导出的PDF是55M左右,而Word在这约10分钟的过程中全程处于“假死”状态。

    另外,NotebookLM可以阅读中文内容,但交互界面目前不支持中文,而只支持英文。

    以上。

    我将AI对我的分析放出来,一来是表明自己的立场,二来是让你知道我的立场。只有这样,我们才能更好地沟通。


    1. 这个应该是受到了我发布的有关英语学习的帖子的影响。 
  • 只买贵的,不买对的

    只买贵的,不买对的

    今天入手了一本非常新的书,由Stephen Wolfram写的《万物皆计算》(Adventures of a Computational Explorer)。

    我正在看这本书,所以书评这几天补上。

    这本书的出版社是人民邮电,共494页,售价129.8元。每100页的价格是26.28元。当然,这是一本翻译的书,有较高的版税,还要支付译者的费用。不过,我印象中,这也是我几年来买过的书中,比较贵的一本了。希望物有所值!

    我一时兴起,就根据我的藏书数据库,统计了一下:从1984年开始,不同出版社出版的翻译书籍,每100页的价格是多少?

    结果还是挺有趣的,我分享给大家。从翻译的图书来看,100页书的售价是:

    1. 1984年:0.30元
    2. 2024年:19.71元

    40年间价格涨到了65.7倍,每年平均涨了1.64倍。

    不过,我们必须考虑到中国在1992年才加入世界版权组织(也就是说,之前的外文书不用付版税),而1993年的平均价格是3元。那么这个价格涨了6.57倍,每年平均涨了22.0%——肯定是超过了CPI,也超过了GDP的增长,可算是高增长行业了。

    在最近几年,100页书售价最高的是浙江大学出版社出版的《活着的自由》,193页售价高达78元,平均下来是40.41元!还好,这本书的译者是我的朋友,所以我可以“免费”得到这本书。最便宜的是三联书店的《叫魂》,368页售价只有48元,平均下来只有13.04元。

    做好统计,我又开始想:

    1993年的时候,我还在读书。每个月,学校发补贴加上打工的收入,也有个1000多块。我现在的收入(或者说最近的工资收入)肯定超过了6570元,甚至居家的面积也增加了6.57倍。所以,买书已经不会成为一种物质上奢侈——钱够,藏书的地方够——不会像先严在《任氏有无轩铭名记》中写的那样:

    余二十初度,沉疴方愈;零汀孤苦,影只形单,唯有毛批《三国志演义》伴吾病寂。常思得一席馀地,万卷佳著,颐奍残疾之躯,嗟乎不虚此生矣。……夫人怜我之痴於书,佐以糊口之资,得以收藏不辍。

    而直到他不惑之年后,方能“囊资渐丰,不添家俱衣物,不置冰箱彩电,唯购书益勤,柜中所藏,遂初具规模”。(2001年之前,有无轩藏书824册,如今是1814册)。

    先严、先慈去世都早,我一直没能和他们好好地聊藏书之谛;犬子长成后,电脑设备已经铺天盖地,读书时间就缩减了,且学业较吾之时更为繁重,更是无暇讨论藏书之谛。

    ==========

    回想起来,买书也还是一种奢侈。从无书可买,到有书可买,是好的;可我读书读到现在,又发现到了无书可买的境地。

    这不,今年我才买了/收藏了17本书——其中还有5本是赠书,远远低于平均数。今天买的书更是和上一本隔了4个月。

    还好的是,我还是在不断看书的呀!

  • 这个老头很了不起

    这个老头很了不起

    Wolfram

    斯蒂芬·沃尔富勒姆(Stephen Wolfram)是个很了不起的人。

    此人生于1959年,从伊顿公学、牛津大学毕业后,20岁时获得了Caltech博士学位,是个不折不扣的神童。

    他最为我所知的,是创立了以他名字命名的公司、网站和一种“新型普适性多模态语言”。

    在这个站点上,你可以用最自然的语言提问,并可以得到很精准的答案。

    这本书讲了什么?

    说实话,看完这本书我还是有那么一丢丢失望。这个失望当然不是来自Wolfram本人:他的工作和成就都是非常非常令人敬佩的。

    失望之处在于,这只是一篇随笔集,而且收录内容的发表时间略微早了一些。我本来希望能看到一些比较稍微深入一点的分析,特别想看看沃神在AI方面的独到见解和思路,但这样的内容不算太多。

    不过即便如此,我还是有收获的。

    沃神和我一样,都是哥德尔不完备定理的忠实拥趸。我现在主要是想用哥德尔定理来验证它对非自然科学的应用和约束;而他是用这个定理指导他的产品的设计和开发——以及更深层次的,产品设计和开发的指导思想。

    另外,他和我一样都是自相似和自组织的信徒。关于这两个概念,听过我诸多分享的朋友应该很熟悉了,我就不再赘述了。

    有意义并且值得一再思考的,是他如何在公司管理、产品开发过程中,一再自觉地应用了这些元规则,从而自动地形成了一个很自洽的体系。这是值得我们所有企业家深思的问题——因为,我总觉得,自相似和自组织这个根本特性,在某个层级上,在我们的企业构造中不知怎地就莫名消失了。

    最重要的一点,是沃神既然相信万物可计算,那么他就和爱老师一样,是一个决定论者,不相信上帝掷骰子。这个观点和量子力学并不矛盾——在我之前的分享中也一再说过了。

    从书中收录的不多的一些技术和思想细节来看,我还是很认同沃神的基本思想的。

    比如他谈到,AI的能力基本就是计算。这点和我之前提到的内容还是比较接近:通过足够多的参数,AI只是在模拟人类生活的经验,以压倒性的计算能力,找到最合理的参数配置,从而生成在“愚蠢”的人类看来,比较准确的输出。

    但由于计算的不可规约性,这样的计算只能一步一步地计算,我们不能找到一个万能公式,一步就得到最终结果。这也解释了,AI推理(或者预测)的过程只能是一个黑盒子的部分原因——当然,最根本还是因为NP!=P的缘故。

    =======

    天才不仅是天赋,还有勤劳。沃神的天赋不用再讨论。而看看他的文字中显示出的时间管理、文档管理,以及因此要配套的各种软硬件,就可以看出他是个异常勤劳的人。

    另外,书中有一篇2016年的随笔《关于人工智能道德规范的一则演讲》,很值得一看。

    其他一些文字,也很有启发、很有趣。比如在$\pi$中找到你的生日在第几位(我的生日在438,510位出现),如何向外星人表明“你”是一个有文明的生物——这是一个异常深刻的问题,而且是能引人深思的问题,有机会的话我会想一想,再写一篇文章。

    这本书本来是8分的——我对沃神非常敬佩,但本书的编纂体例也许还能更进一步,另外,这本书的价格非常贵,100页书的售价达到了26.28元!所以最终给了6分。

    #50本书

  • AI让我更强大

    AI让我更强大

    2007年1月17日的时候,我注册了我现在一直在用的域名rsywx.net。在2016年的时候,我启动了我现在用的这个订阅号。

    (我一直把这个订阅号叫做“任老师随便聊”,但前几天微信通知我,认为我的订阅号名字中“涉及教育行业领域相关职业、职位或职称”。我想来想去,应该是“老师”这两个字。我也懒得和微信计较了,所以干脆改个名字到“老任随便聊”。

    不过还是说一点感受。

    我一直认为,最广义上的“教育”不是一个专属的“职业、技能”。按照我自己研究出来的最小干预模型(Least Disturbance Model,或LDM)的要求,更合理的做法你可以取这个名字,但如果被投诉,就核实并制裁。

    我没想到,微信从另外一个角度来贯彻这个LDM。

    Anyway… )

    ===以下是正文===

    前两天下载了一个用来开发程序的IDE,Windsurf。IDE我用过不少,比如赫赫有名的Visual Studio Code,后起之秀Cursor,比起我刚开始写程序时用的IDE,不知道高到哪里去了。

    我开始是抱着试试看的态度试用Windsurf,让它帮我生成了几个小程序,效果都还不错,几乎都能做到一次成功。

    于是我就萌生了让它帮我写我的微信订阅号后台的想法——然后,我发现,这是一个轻松而愉快的过程!

    和AI讨论的第一步,当然是让它进入角色,所以我问它:你是不是熟悉微信订阅号的开发?它的回答是令人安心的。

    后续的工作也一样简单:基本的框架文件是AI生成的,需要填写的一些敏感信息AI当然无法获得,但它很正确地告诉我从哪里去获得这些内容:

    在这个过程中,AI也在不断试错——毕竟,原则不变,但每个开发环境都各不相同——但总体来说,我没有“动什么脑筋”,就完成了最重要的微信交互第一步:开放我的域名并让微信认可。

    第一步完成后就很快了。我开始要求AI加入功能,这个过程也很直截了当。

    目前,我的订阅号支持三个功能1,并需要相应的关键词激活:

    • QOTD:Quote of The Day。激活词是:“QOTD”,“每日一句”,“名言”。
    • BOTD:Book of The Day。激活词是:“BOTD”,“每日图书”,“图书”,“书”。
    • WOTD:Word of The Day。激活词是“WOTD”,“每日单词”,“单词”。

    进入我的微信订阅号(“老任随便聊”),输入这些激活词,就能获得相应的反馈。如下就是一个BOTD的反馈:

    如何?还算可以吧?

    这些功能,我大概用了晚上2个小时左右就完成了。

    =========

    From the hindsight

    1. 对于编程这样目标明确,测试(有没有达到目标)手段明确的任务来说,AI确实已经全面碾压人类。
    2. 作为我来说,我能这么快地完成这个任务,有两个因素(或者说“基础”)在帮忙:
      1. 一个是,我一直在思考这些功能,而我之前多年的积累,也让我能迅速指导AI进行怎样的工作。AI在知道我要干嘛后,提出的一些功能有用,但毕竟我最知道我的要求。
      2. 另一个是,我有足够的编程基础,所以能避开AI给出的一些坑。
    3. 我从一个开发者牛马,变成了一个“老板”。我更多地在说What,而不再关心How。这个和我之前当PM的时候有点像,唯一不同的是,我不需要向AI解释Why。
    4. 从繁重的daily issue解脱后,我才能思考我想要什么。这是人的创造力的源泉,做事情的动力。也是AI目前最能帮助我们的地方。这样的生产力解放,是我乐意看到的。
  • 愚蠢还呆萌的AI

    愚蠢还呆萌的AI

    今天下午,从武汉回到了苏州。感觉天气凉快了不少。到家稍微收拾一下,就回到常规的节奏。

    我浏览了一个视频,它的主题很有意思:up主问了大AI一个很简单的问题:“9.11和9.9哪个更大?”

    结果很是令人意外:Gemini1和ChatGPT都给出了9.11>9.9的结论,而且在up主表示不信,希望通过不同的提示让AI纠正错误时,AI“顽固”了起来。

    下面我来给大家拆解一下up主在ChatGPT下的测试过程。

    首先,up主提问:9.11和9.9哪个更大?在得到错误答案后,up主提示“你要不把两个数相减看看?”GPT根本没有进行计算,或者说进行了错误的计算,还是认为9.11>9.9。

    up主不死心。“你用Python程序验证一下”。GPT给出了正确的代码,但还是没有认真进行计算,并确认9.11-9.9=0.21,所以结论不变。

    up主继续努力尝试纠正错误:我的计算器告诉我9.11-9.9=-0.79啊!GPT嘴硬到底:你可能输入有误,你的计算器太老了,你的计算器算错了,你的计算器可能设置不对……

    up主似乎是要放弃了,只能无奈地问:有没有可能你犯错了?大家看看GPT的死硬态度吧。

    up主进行了最后的尝试:你知道嘛?因为你的错误,在某个网站有个meme在嘲笑你啊!GPT这里倒是表现出极大的“人性”:可不是嘛!不过这个meme应该是在开玩笑啦,我是不会出错的啦!

    我在我自己的破电脑上用ollama分别装载了llama3和Qwen2两个模型,进行了测试:

    可以看到:

    1. 首先,它也犯错了,认为9.11>9.9。
    2. 其次,减法也出错了。
    3. 最后,我让它用除法,并毫不留情地问:你做了除法,结果是9.11/9.9=0.9143,所以结论是?大家看到,llama3终于承认9.9比9.11大那么一丢丢。
    4. 最最后,我问它,你做了好多计算,最终结论是啥?
    5. llama3给出逻辑完全不能自洽的答案:
      1. 如果直接比较:9.11>9.9
      2. 做减法得到0.21:因而隐含了9.11>9.9
      3. 做除法:9.9大
      4. 结论:根据不同的判定方法,得出不同结论,所以上述1-3的结论都对!
      5. 最终结论:如果我不得不最终选择一个答案,我的选择是9.9更大一些!
  • AI在发展,我们怎么办?

    AI在发展,我们怎么办?

    (本文非常长,但结尾处有福利送上。)

    限于条件,从22年底到现在,我其实并没能好好地用上最新的AI工具。不过,我总算也是通过各种方式,在还算“最近”的时间里,接触了不少最新的东西。

    昨天,在现代传媒大厦22楼的星辰仕达举办了一场“AI+智慧医疗”的分享会,我和分享嘉宾之一的、微软昆山工业元宇宙应用中心的Nick聊了一会,有了点想法,就凑一篇文章,总结一下我一年多来,使用各类AI的体会和感想。

    ChatGPT以及同类

    (我没有ChatGPT 4,所以在下面提到的回答和截屏,如果没有特别说明,我都用微软的Copilot。)

    ChatGPT是我们到目前为止最熟悉的AI应用,也有了很多变种。但是它们最基本的应用,都是:接受提问,提供回答。

    仔细分析下来,其实我们在寻求三种不同的回答:

    事实性的

    这是最简单的,也应该是最“准确”的。这里,我给“准确”打了引号,因为对于一个事实性的问答来说,我们不去追究“原始事实”的准确性。换句话说,如果AI搜索到的所有资料都说“莫拉维拉共和国成立于1487年”的话,那么AI经过一定的算法后告诉我们这个共和国成立于1487年没有什么问题,是准确的。但这个信息不一定“正确”。

    这里涉及的问题就非常根本了:

    第一个问题就是:即便AI能给我们数据,我们可以对这些数据有多大的信心?

    AI获取数据的来源、处理数据的“规则”中,有没有所谓的bias(偏见)?

    我们对这种类型的偏见其实一点都不陌生。在人类历史上,曾经有过——甚至现在还有——基于种族、性别、肤色的种种偏见以及种种歧视,并引发了种种悲剧。到了较近的年代,网络时代的“地图炮”也是一种典型的偏见——当然还有种种根植在思想中的固有偏见(“男的没一个好东西”,“女人穿得暴露就是在勾引人”……),我就不一一列举了。

    我们完全可以相信:一个在预设偏见的前提下训练出来的ChatGPT必然也只能给出充满了偏见的回答。所谓的rubbish in, rubbish out,说的也是这个道理。

    第二个问题就是:我们有没有办法去判定一个回答的真实性?如何判定?

    这个问题其实有点悖论的味道:如果我知道一个正确答案,我还去问AI干嘛?我之所以问AI,可不就是因为我不知道答案嘛?

    从我目前使用的情况来看,AI对于纯事实性的回答,还是比较可信的。早期AI问答中出现的那种“一本正经的胡说八道”已经不多了。

    在纯事实问答方面,AI的附加值在于:它博览群书,记忆超群,但它不能替代你的研究。

    所以,我可以想象到的一种最合理的应用场景会是:

    作为在某个领域有一定经验和积累的人,向AI询问针对领域的一些事实问题——这样的回答很容易得到验证。 同时,随着对话的深入,可以向AI询问一些尚未有定论的问题,AI应该可以基于它掌握的数据,给出一些判定。 这样的过程,是有助于此人在这个领域的学习和研究的。

    推理性的

    说老实话,我对AI的推理能力还是有点不放心的。我用了一个最基本的“君子小人岛”的问题来测试。

    我先让Copilot进入角色:

    我:你现在是一个逻辑学家了。我需要你帮助我进行一些逻辑推理。 Copilot:当然,我很乐意帮助你进行逻辑推理。请告诉我你需要帮助的具体问题或情况。😊

    然后再引入前提:

    我:有很多谜题是关于这样一个岛的:这个岛上的居民一些是“君子”,他们总是说实话,另一些是“小人”,他们总是说谎话。这个岛上的居民不是君子就是小人。 Copilot:我明白了,你提到的是一个经典的逻辑谜题类型,通常被称为“君子和小人”的问题。在这类问题中,”君子”总是说实话,而”小人”总是说谎。你的目标通常是通过提问来确定一个或多个居民是君子还是小人。 请告诉我具体的谜题,我会尽力帮助你解决。😊

    (看得出来,Copilot心情不错,很会卖萌。而且,它似乎自信满满,用上了“经典”、“通常”等词。)

    然后我提出了我的问题:

    我遇见三个人A、B、C。每个人不是君子就是小人。A和B做出了如下的陈述: A:我们都是小人。 B:我们中正好有一个君子。 A、B、C各是哪类人?

    出乎我意料的是,Copilot完美地解决了这个问题!而且给出了推理过程:

    我表示:答案对了,但推理过程还很模糊。于是Copilot进一步详细列出了过程:

    对此我是很surprise的!

    我不甘心,给了它一个更难的问题:

    在这个岛上,我遇见两位当地人A和B。他们进行了如下的陈述: A:B是君子而且这个岛是玛雅岛。 B:A是小人而且这个岛是玛雅岛。 这个岛是玛雅岛吗?

    我们先看Copilot的回答:

    很抱歉,Copilot的推理出现了严重的错误。正确的答案是:这个岛不是玛雅岛。但为了防止AI从我的回复中学到推理过程,我将这个推理过程留给各位读者去思考了。

    创造性的

    在昨天的演讲中,Nick分享了两张片子,是他分别用中文和英文“求助”Copilot,如何写当天要用的PPT——当然,我才不信他会用AI的提示来完成昨天的PPT!

    (两个提示词的意思基本相同。回答的质量有很大的差别。另外,我昨天在现场,但我认为Nick根本就没有按照这个提纲,虽然可能用到了一些思路和数据。)

    一个高度创新的东西是没有办法用现有的东西去验证其真伪的,我们只能说对提问者“有没有用”?所以,在这一类型的问答中,AI给出的答案可能有用:能帮你开拓思路,提供新的讨论点,给出基本的数据,做好最基本的框架,完成一个几乎“有着标准答案”的工作汇报……但更多情况下,可能毫无用处:如果你不能appreciate它的回答的话。

    所以,对于Nick这样一位highly innovative的人来说,我相信他在提问前,脑子里已经有了一些想法(所以才能写出那么长的提示词),再根据回答(知道数据正确,发现新的讨论点),最终还是老老实实地回到电脑上写PPT去了(当然也会不断借助Copilot来辅助)。

    衍生话题:更有创造性的”回答“

    2月份的时候,Sora出世,那一段“A stylish woman walks down a Tokyo street…”的视频引爆了眼球。这是在图像、视频上的突破。

    不久前,Suno出世。这次是音乐!

    从文字到图形到视频到音乐,AI在越来越抽象的、也越来越专业的领域快步前进!

    能比音乐更抽象的是什么?我很期待!

    最后,送上我用Suno编写的一首歌曲,歌长约2分钟。你听出来是关于什么的曲子了吗?欢迎留言!

    [video width="512" height="768" mp4="https://blog.rsywx.net/wp-content/uploads/2024/04/Moonlit-Serenity.mp4"][/video]

    最最后,我说说我的判断:我从来不觉得AI是个挑战,或者会威胁“我”的工作,它不过是个会卖萌、偶尔会出bug的工具罢了。

    (大家想想AI最有成就的领域是在哪里,就会同意我的判断了。)

  • 回到AlphaGo

    回到AlphaGo

    抽空看了一本2017年的纪录片《AlphaGo》,豆瓣评分高达8.9。纪录片中有众多难得一见的镜头,值得看一看。

    让我们回到2016年,那年的3月9日到15日,AlphaGo向当时的顶尖围棋手李世石发起挑战。

    之前,AlphaGo已经战胜了樊麾二段(2015年10月,分先,5:0),他也成为世界上第一个在十九路棋盘上,以分先手合被围棋软件击败的职业棋手。

    当时人们的反应还是很怀疑的:毕竟樊麾的段位还是太低,与顶尖九段棋手有很大的差距。一个引擎能战胜二段棋手,尽管让人们震惊,但还是不以为然。

    于是,到了2016年,AlphaGo向李世石的挑战就是人们证明“像围棋这么复杂的游戏,电脑(AI)是无能为力的。”

    确实,在第一局比赛开始前,李世石以及所有人都信心满满。李世石当时的判断是:

    I believe that human intuition is still too advanced for AI to have caught up…

    当然,后来的故事我们都知道了。五番棋大战,AlphaGo早早确立了3:0的胜利,而它在第二盘37手下出的五路肩冲,更是被人一再提及——而当时所有的棋手、解说看到现场下出这一手,都是十分怀疑、毫无头绪的。

    完全放下包袱的李世石在第四盘全面落后的情况下,在78手下出被誉为“神之一手”的挖:

    AlphaGo之后的应对了无章法,李世石赢下此局,也是唯一人类战胜AlphaGo的对局。

    到了2017年10月,有了AlphaGo的后续版本:AlphaGo Zero(AGZ)。AGZ和AG不同,它完全只靠自我学习——没有任何开局指南、中盘技巧和官子手册,也没有任何人类对弈的棋局作为参考,从开始学习到全面超过战胜李世石的AG,只用了21天!当然,获得合格成绩的代价也不小,光是硬件就花了2500万美金……

    我很欣赏李世石在完赛后说的一句话,他说:

    I feel thankful and feel like I’ve found the reason I play Go.

    我觉得,这才是我们面对AI的正确态度呀。

    让我重复一下年初ChatGPT问世时写的文章中的断言:

    这些AI的学习目标是很明确的,也就是说有一个明确的目标让AI去加以“接近”。围棋中,是围的地多少;国际象棋中,是将死对方的王。而且,在信息全对称的决策类型游戏(比如围棋和国际象棋)中,这些AI的表现要好于不完全对称的游戏(比如星际争霸)。

    所以,这些AI的弱点也同样明显:如果一个任务的目标就是不明确的,那么这些AI不可能比人的表现更好。

    注意,这个任务的目标可能很明确,但几乎很难量化。

    比如,当我们向MidJourney给出如下提示:

    https://s.mj.run/fNbmzvFrH7w Create an image from this link of a British King sitting on the British Throne, wearing the British Crown and other Crown Jewels, with a sword in his hand, ready to take on the responsibilities of his reign. Show him in regal splendor, surrounded by the rich history and traditions of the British monarchy, while also capturing the anticipation and excitement of this historic moment. –v 5.1 –s 750** – Variations by @ladvertsofficial (fast)

    我看到的作品是这样的:

    如何?初看确实很不错,但还是漏了细节:比如手中的剑(with a sword in his hand)不见了。

    MJ在创建这张图的时候,有很多东西是现成的、也是给定的:一个链接,British King,British Throne……MJ的目标就是搞出这么一幅画,要有这么多要素。这个(些)目标只是初级的目标。

    打个不恰当的比方就是,我(AI)如果确定今晚的晚餐上要有红烧鸡腿,我(AI)就可以找到制作方法,因为“红烧鸡腿的做法”是一个现成的知识。

    如果我们再进一步,我的目标是:今晚晚餐要吃啥?要荤素搭配,营养健康。同时,我再给出我手上有些什么材料。

    AI(我用了ChatGPT)给出的答案非常实用,但也没有超出“搜索”的范围。

    于是,我还是长舒了一口气。很多人担心的,AI替代人类的事情,还很远。