版权说明:
本文仅记录在阅读 于建国(YJango)博士的《超智能体》一书过程中的笔记。本文作者已通过邮件联系作者,获得授权。
智能的本质
智能起源于随机性(熵):随着时间的推移,孤立系统会自发朝向最大熵状态演化[不去刻意整理的宿舍会越来越乱]。
智能:根据环境变化做出相应变化的能力,即熵减的能力[减少“不确定性”]
想要探究智能,我们必须具备正确描述世界状态和不同时间下的状态变化。线性代数则给了我们答案。
线性代数
线性代数:有关任意维度空间下事物状态和变化状态的规则
矩阵的本质:存储状态(静态)或变化(动态)的信息
- 矩阵的静态信息:
向量可以描述一个事物的状态,许多具有相同维度的向量的有序排列构成了矩阵。- 关于张量:多个标量有序排列后形成向量,多个向量有序排列后形成矩阵,多个矩阵有序排列后形成三维张量(3D tensor)。
矩阵的动态信息:
此时矩阵可以看做是多个维度相同的权重的有序排列,并且可以对另一个矩阵的静态信息进行批量变化。这便是矩阵乘法的本质。两个矩阵相乘,一个矩阵提供状态信息,另个矩阵提供变化信息
向量空间:能够容纳所有线性组合的状态集合。
- 向量空间一定在各个维度可以无限延伸(因为实数域无限)
- 子空间:子空间内的向量空间
- 最小的子空间:0
- 空集不可以是向量空间
线性变换:
矩阵乘以矩阵可以视作一个矩阵内部向量的批量线性变换(lineartransformation)。方便理解起见可以仅讨论由矩阵乘以向量所形成的一次线性变换。直接上图:
线性变化:不同维度空间下的向量组的投影。例如$y{2*1}=A{23}x_{31}$便是将三维向量$x$经过线性变换后变成二维空间的向量$y$。
注:神经网络的核心 $$ y=a(Ax+b)$$
维度的扩展
思维空间:人们认为自己拥有自由的意识和思维。然而这种自由也是有限的。它好比线性空间里的张成,能张成多大的意识空间取决于脑中有多少互不相关的因素,也就是维度(秩)。
维度的作用:
- 复数的理解:进一步扩展的数的域。
- 傅里叶变换的理解:在x-y坐标系上增加1维时,一切豁然开朗。
弦理论的理解:尝试融合相对论和量子力学的理论,但只有当扩充到10维空间+1维时间时,数学公式才合理。
弦理论:
- 1.问题的起源:
- 宇宙也许存在高维度的空间
- 构成世界最基础的成分是什么?
- 2.物质的构成:分子->原子->质子、中子->???
可能是不断跳动的能量线条:宇宙万物的一切皆源于此。 - 3.上述理论的数学证明之后在十维空间和一维时间的情况下才成立。那么我们的宇宙的确可能存在高纬度的空间
- 4.新的问题:当我们观测一个宇宙的状态时,我们确定了20个数值(粒子的质量,重力场的强度,…),并且如果这20个数中的任何一个数有所变化,我们的宇宙将不复存在。那么这20个数值是因为什么而确定的呢?
也许是更高纬度的空间 - 通过实验证明高纬度空间的存在:
欧洲大型强子对撞机通过将质子加速对撞,观测:如果对撞后的能量有所损失,则可能是因为对撞的一部分“残骸”进入到了高纬度空间!
- 通过实验证明高纬度空间的存在:
- 1.问题的起源:
小结:当问题无法被理解时,往往是因为找错的地方,不妨尝试扩展维度,增加搜索空间。然而由于信息量的限制,很多事物无法确定变化后的状态,因此需要概率为我们提供依据。
概率
概率是用来衡量事物在跨时间后的不同状态的确信度
熵与生命
生命活着就在减熵:利用信息压缩(或者说抽象)后形成的知识,对抗熵增!
智能的条件
- 智能LV1:从环境到行动的关联能力[生存](植物&微生物)
- 智能LV2:利用过去到未来的关联能力[预测](动物)
- 智能的实现:通过存储关联的材料(遗传物质)
自然智能
RNA与DNA(智能LV1)
- 识别:DNA上的信息:蛋白质合成。
- 学习:繁衍,变异,筛选。
- 进化:进化是以种群为单位的被动过程
问题:在《未来简史》中,作者描述人类将打破自然选择的进化理论,转而通过基因改造技术“主动”进化。 - 永生的缺陷:永生者失去了为种群提供差异性的筛选功能。
神经元
- 神经元的本质行为:
$$y=a(Wx+b),其中x是输入信号,y是输出信号$$
人工智能
梯度下降的问题
- 局部最小值(鞍点)的解决方案:
- 随机梯度下降:每次只更新一个样本所计算的梯度
- 小批量梯度下降:每次更新若干样本所计算梯度的平均值
- .etc
深度学习
神经网络不缺少新结构,但缺少一个该领域的$E=mc^2$
- 为什么神经网络高效:并行的先验知识使得模型可用线性级数量的样本学习指数级数量
的变体: - 学习的本质是什么:将变体拆分成因素和知识(Disentangle Factors of Variation)
- 为什么深层神经网络比浅层神经网络更高效:
- 神经网络在什么问题上不具备优势:
- 非函数问题:需要想办法将问题转化为函数问题
- 非迭代:该层的状态不是由上层状态构成的任务
深度学习计算机实现平台:tensorflow
Tensorflow基本用法
- 准备阶段:组装计算图
- 计算图
想象成一个管道
:需要组装的结构,由许多操作组成 - 操作
想象成不通管道分支的连接处
:对零个或多个数据进行输入与输出 - 数据类型:1.张量(tensor)2.变量(variable)3.常量(constant)
- 张量
想象成管道中的液体
:多维度array或者list
tener_name = tf.placeholder(type, shape, name) - 变量:在同一时刻对图中所有其他操作都保持静态的数据(管道中的阀门)
name_variable = tf.Variable(value, name) - 常量:无需初始化的变量
name_constant = tf.constant(value)
- 张量
- 计算图
- 执行阶段:使用计算图
- 执行语句: sess.run(op)
- 送值(feed): 输入操作的输入值(输入液体)
sess.run([output], feed_dict={input1:value1, input2:value2}) - 取值(fetch): 获取操作的输出值(得到液体)
sess.run(one op)
sess.run([a list of op])
DEMO部分:
YJango博士的部分demo由于tensorflow版本问题可能无法运行,我将部分代码已经“修正”并已上传至github,本地环境测试均可通过,请大家放心使用。
代码部分的笔记
参考与引用: 1. 《超智能体》 于建国(Yjango)博士