基本问题


命名

命名的重要性
  1. 好的设计从命名开始
怎么在团队内统一命名规则
  1. 制定规则和培训

抽象

image.png

理解《思考,快与慢》

卡尼曼如此形容两大思考模式

系统一:自动化的运作,非常快、不费力气,即使要费力,也很少,它不受自主控制。以下为系统一的工作内容,大致依复杂度排序如下:

系统二:动用到注意力去做费力的心智活动,包括复杂的计算。系统二的运作通常都跟代理人、选择和专注力的主观经验有关。以下为系统二的工作内容:

大脑确实好像存在两种系统,更像演化的结果,为了平衡效率和智力的结果,两种思考模式会相互转换

人类确实存在贪心思维,尽快做出二元决策,但是这个是为了思考效率,而且系统二其实一直在验证决策的正确性,只要有足够的时间,系统二会主动纠正错误。

人类可以通过系统一快速的通过对比概率形成决策,也就是第六感,而且这个精度大概可以达到1/200的精度。

  1. 人脑具有意识,意识的本质是在维护一个自洽的逻辑链
    1. 一旦已经被认定是正确的事实很难被更改
    2. 更改需要同时修正所有依赖这个观点的其他逻辑
    3. 人脑会自动的实时根据输入判断信息有没有矛盾,即是否自洽
  2. 生物脑为了效率,会尽量的维护一个具有紧密逻辑关系的思维链
    1. 如果能用现有的思维逻辑进行判断/表达,不会为了一个单点信息创造一个新的逻辑关系

锚定效应:人类在进行决策时,会过度偏重先前取得的资讯(这称为锚点),即使这个资讯与这项决定无关。在进行决策时,人类倾向于利用此片断资讯(锚点),快速做出决定。在接下来的决定中,再以第一个决定为基准,逐步修正。但是人类容易过度利用锚点,来对其他资讯与决定做出诠释,当锚点与实际上的事实之间的有很大出入,就会出现当局者迷的情况。

假设A店和B店都陈列完全一样的三千五百日圆混装饼干。A店主要是卖一千日圆左右的饼干为主,所以客人看到三千五百日圆的商品,会觉得“贵”。但是B店大多是卖价格在五千日圆上下的饼干,看到三千五百日圆的混装饼干,会觉得“便宜”。

人类在对一个事物缺乏信息的时候,会以接收到的第一个信息作为锚点作为基准

当人们因为想起某一事件时能够轻易联想到相关的案例,而认为该事件发生的几率较其他事件高时,则陷入可得性捷思法的认知偏误

对于概率的判断在没有相关信息的时候,都会依据现有信息直接给出自己的判断,贪心思维的体现

属性替代:当人们面对一个复杂的问题时没能立即找到满意的答案,系统一倾向于用简单的问题将复杂的问题替代。

贪心思维的体现

乐观偏见与损失规避

自我保护的心里,更倾向于对自己有利的结果,抑郁症患者则相反,所以是受激素水平控制?

框架效应指人们被问及相同的问题但不同的描述时,人们会选择乍听之下较有利或顺耳的描述作为方案。举例而言,当受试者被问到是否愿意手术治疗时,被告知存活率为90%的受试者会较被告知死亡率为10%的受试者更愿意承担风险,尽管两者的风险完全相同

下意识的判断逻辑有一定的倾向性,可能是根据接触的世界事物的统计结果产生

沉没成本:人们往往不愿意正视持续增加投资未必会带来更多回报的事实,而选择铤而走险地持续对过去投资失败的项目增资,以逃避过去投资失败带来的反悔心理

过度自信

展望理论:长久以来,主流经济学都假设每个人作决定时都是“理性”的,然而现实情况并不如此;展望理论加入了人们对得失、发生概率高低等条件的不对称心理效用,成功解释了许多看来不理性的现象。

两种自我分别为“体验自我”和“记忆自我”

思考人生规划:当人们在思考人生当中的一件事情时,在思考的当下会高估该单一事件于一生当中的实际影响。

哲学观点

哲学的本质本身就是一个哲学问题

胡适的描述是:凡研究人生切要的问题,从根本上着想,要寻一个根本的解决:这种学问叫做哲学

对哲学的主题亦存在许多看法。一些人认为哲学是对问题本身过程的观察。[15]

  1. 社会的科技进步方向是全社会无数实践的成果,是众多科学家达成的共识
    1. 技术进步越复杂需要探索发展的时间越久,如果中间有更简单的替代方案必然容易被接受并流行起来
    2. 技术更需要的是一种渐进式的,通过简单有效的,一层一层的组合起来
    3. 例子:计算机体系技术的程序、语言、编译器、指令、冯诺伊曼、半导体晶体管。。。
    4. AI技术正处于多方探索阶段,transformer凭借着简单有效而流行起来

世上没有永远持续的增长,只有S型曲线式增长

image.png

世界上不存在无限增长的事情(说你呢,Scaling Law),这基本是个定则,即使把目光拉长放到宇宙级视野里,宇宙中最大速度也不可能超过光速,宇宙它再大也总有个边界,是吧?所以,我觉得很可能各种看着貌似可以无限增长,但那是因为我们看它的时间窗口还是太短,S型增长曲线(Sigmoid函数刻画的非线性曲线)可能才是更准确对增长准确描述的曲线,要我猜AI智能增长趋势大概也是如此。

通用的抽象

背景、需求

  1. 自动根据输入信息进行结构化建模
  2. 让AI进行一种更通用,哲学上完备的方法,类似于,面向对象对编程技术的抽象
  3. 自然语言等抽象概念的结构化
  4. 通用抽象引擎, 通用NP问题解决
  5. 通用基础计算单元,算法基础范式

要求

  1. 怎么表达“抽象的程度” ,“抽象的能力”
  2. 怎么表达“对象”的行为(“方法”),对象除了属性还有方法
  3. 标准的抽象定义方法和通用的逻辑运行和表达方法

对象

  1. 所有都抽象为对象,对象的定义本身包含所有的约束,只要能生成出合格的对象就是符合约束
    1. 对象,定义一个符号
    2. 继承,分层级定义对象,定义公共属性,表达隐含的“是”
      1. 拓扑关系及层级结构
    3. 组合
      1. 对象可以组合形成新的对象,表达“包含”语义
      2. 表示内部状态
      3. 对象的属性
    4. 转换,对象之间的转换关系、转换逻辑,包括构造方法、初始化方法
      1. 参数:表示转换的条件
      2. 带1个返回值的方法:构造
      3. 不带返回值的方法:更新内部的状态
  2. 对任意事物的抽象,或者说约束。
  3. AI试图生成符合要求的合格对象及对象定义

实例

  1. 层级式的笔记的需求
    1. 表示包含可以拆分、解释的子项
    2. 表示需要的步骤
    3. 罗列一个项目形成的原因

编程语言/程序库/API

  1. 定义一个对象,对象的组合
  2. 对象之间的转换的方法
    1. 逻辑判断、运算
  3. 可以友好得使用深度模型和梯度下降进行训练、求解

LLM大模型的抽象解释

  1. 可以直接实现现在的LLM的需求
    1. 每个token就是一个基础对象
    2. 每个固定的句子就是组合之后的对象
    3. token的输出就是转换之后的对象
  2. tensor:对象的属性
  3. dot/gemm:对象的转换
  4. 对象的组合:attention
  5. 文生图的工作分析
    1. 输入一串的文本,经过抽象成内部的表达:一堆的“语言抽象出来的对象(不同层级)”的组合
    2. 转换成图像的抽象对象的表达
    3. 通过“图像对象”转换成图像
    4. 语言 -> 语言对象 -> 图像对象 -> 图像
    5. 端到端的训练,同时训练中间的3次转换的模型
  6. 示例
    1. NetList -> 对象 -> 对象 -> PR结果
    2. sequence -> 语言对象 -> sequence

应用

设计一个通用的思维方式,对基础模型进行按照通用的思维方式进行微调

以设计的固定关键字作为通用的接口,遵循一个通用的“模版接口”

作为AI的专用思考语言,思考的方式

作为人类和AI交互的接口,避免自然语言的不精确

在生产环境下描述需求是非常复杂的。他们不知道如何写提示词,描述不准确会导致 AI 的回复质量低下,进而使开发者失去信心。其次,是 context(上下文)的处理。在复杂工程中,如果 context 给得不对或给得太少,AI 就无法理解整个架构,可能会出现一些幻觉,比如新增错误的类或改错地方,这会导致准确率下降。

避免和解决,“许愿”式的交互——目前大模型的用户无法清晰描述具体需求,更像是在表达愿望

目前AI只能理解和生成一些低层级的抽象,不能生成和设计高层级的设计

对于辅助编程来说,只能实现一些固定简单功能的函数,对于复杂的类抽象设计不能实现,高层次的功能不容易描述和表达。

工程化接口

  1. 通用的抽象方法
    1. 派生/继承/重写:对基础对象进行扩展,复用公共的定义
    2. 对象的初始化的表达
      1. 构造函数,基类的构造
      2. 成员变量的实例化
    3. 引用-指针
    4. 组合:一个对象可以包含多个不同类型的定义/抽象,组合形成新的定义/抽象
    5. 变换:成员函数,定义一个支持一个或者多个定义/抽象的输入,输出一个或者多个定义/抽象
    6. 适用场景:isa的定义,建模的定义,
  2. 扩展到所有的抽象工作
  3. 定义一种简单的脚本语言,适用于通用的抽象表达
class A:
  pass

class B:
  pass

class C(A):
  C()
  B b
  A ToA(B):
    return A

Backup

继承, 初始化参数 构造函数 static

组合(实例化) 及初始化 调用构造函数

初始化序列,层层构造

方法(变换)

1. 构造函数也是方法的一种

引用-指针

1. 所有的成员变量都是被使用都是采用指针或者引用

构造函数是必须的吗?

1. python 作为config 被解析成ast,只是利用了python的语法,替代toml
2. 动态解析python model + model运行

光学镜头和航空发动机的区别

相同点

  1. 都是处理光流和气流,对其路径进行改变和控制
  2. 都有多层多级结构
    1. 为什么?

工作风格的区别

遇到意见不一致的时候的处理方法

  1. 逃避,事前避免,自我保护性避免
  2. 利用制定一些规则来使得问题有统一的处理方法,使得大家达成一致
  3. 利用名义上的决策者,虽然不是管理者,平时不参与讨论,但是有决策权力

和领导有不同意见的时候

和下属有不同意见的时候

当项目进度和创新有冲突的时候

怎么鞭策下属努力工作

C

J

H

架构的力量

什么样的架构设计是优秀的

  1. 工作效率
    1. 高效的开发效率
    2. 高效的使用
  2. 有效
    1. 能很好的满足多方需求
    2. 能快速、清晰的进行配置
    3. 合理的接口
  3. 生命力
    1. 支持不断的演进

优秀的架构设计能带来什么

架构等级

  1. 高级:设计方案、概念,规则
  2. 低级:打补丁式的解决问题,通过增加一个规则、约束、变量的方式来解决问题


数学理解

  1. 数学总是在发明各种定义,并且在定义的基础上寻找特定的规律
    1. 如果生活的一种现象符合某种数学的定义,那么就可以用已经证明的规律进行计算/推到
    2. 从而对抽象的事物用数学工具进行计算
    3. 比如说互联网用的加解密算法,就是利用一些独特的数学证明其安全性
  2. 数学有很多分支和流派,比如几何学、图论等等
    1. 很多不同的分支虽然设计的定义(公理)不一样,但是实际上可能是表达同一种“现象”,只是用不同的方式进行描述
    2. 有的时候,使用一个分支的一个规律推到出另外一个分支的规律,就会觉得很“神奇”,很“不可思议”