630 likes | 741 Views
耸人听闻 —— 美发明可读人脑思维的仪器 隐私想法无处遁形. 北京时间 1 月 4 日消息,据英国 《 每日邮报 》 报道,美国科学家近日称,他们目前已经成功地研制出一款可以读懂人脑思维的仪器,借助于这种仪器,人们甚至是最隐私的一些想法也将会无处遁形。. 神经网络.
E N D
耸人听闻——美发明可读人脑思维的仪器 隐私想法无处遁形 北京时间1月4日消息,据英国《每日邮报》报道,美国科学家近日称,他们目前已经成功地研制出一款可以读懂人脑思维的仪器,借助于这种仪器,人们甚至是最隐私的一些想法也将会无处遁形。
神经网络 • 根据一个简化的统计,人脑由百亿条神经组成 —每条神经平均连结到其它几千条神经。通过这种连结方式,神经可以收发不同数量的能量。神经的一个非常重要的功能是它们对能量的接受并不是立即作出响应,而是将它们累加起来,当这个累加的总和达到某个临界阈值时,它们将它们自己的那部分能量发送给其它的神经。大脑通过调节这些连结的数目和强度进行学习。
从非技术角度看神经网络 • 是否可行? • 学习和计算 • 几个例子 • 问题
人和机器 • 情感-计算 • 人如何产生想法? • 大部分是来自于自己已经得到的信息,再加上少量信息的关联和整合,然后构造出了“想法”。 • 比如在已知“这张数学考卷我完成仅65分左右的题量”和“以往的数学考试不及格的次数不少于5次”的信息,我很可能就认为“这一次考试很可能不及格”。 • 富兰克林:闪电+风筝-〉闪电与电 • 法拉第 :电能生磁+硬币正反-〉磁能生电
神经网络的主要思想 • 人的思考 • 学习已有知识,根据知识来作判断的过程 • 神经网络 • 学习知识-〉进行决策
神经网络的几种类型 • 神经元 • 向后传播 • Hopfield • 双向关联记忆网 • Hebbian学习网络 • 竞争学习网络
什么是神经网络 • 模仿生物神经元 • 是一个计算模型,与传统的计算机的计算模型不同 • 连接计算单元,形成网络进行计算 • 模型的建立方面(取样)
人工神经网络 • 人工神经网络(Artificial Neural Networks,简记为ANN),是对人类大脑系统的一阶特性的一种描述。简单地讲,它是一个数学模型,可以用电子线路来实现,也可以用计算机程序来模拟,是人工智能研究的一种方法。
人工神经网络的提出 • 智能与人工智能 • 智能的含义 • 智能是个体有目的的行为,合理的思维,以及有效的、适应环境的综合能力。 • 智能是个体认识客观事物和运用知识解决问题的能力 • 人类个体的智能是一种综合能力
人工神经网络的提出 • 人类智能的5种基本能力 • 感知与认识客观事物、客观世界和自我的能力 • 通过学习取得经验与积累知识的能力 • 理解知识,运用知识和经验分析、解决问题的能力 • 联想、推理、判断、决策语言的能力 • 运用进行抽象、概括的能力 • 综合表现形式 • 发现,发明,创造,创新的能力 • 实时,迅速,合理地应付复杂环境的能力 • 预测,洞察事务发展,变化的能力
人工神经网络的提出 • 人工智能三大学术流派 • 符号主义(符号/逻辑主义) • 连接主义 • 进化主义(行动响应学派)
人工神经网络历史回顾 • 萌芽期(20世纪40年代) • 最早可以到人类开始研究自己的智能的时期 • 1943年,心理学家McCulloch和数学家Pitts建立起了著名的阈值加权和模型,简称为M-P模型。发表于数学生物物理学会刊《Bulletin of Mathematical Biophysics 》 • 1949年,心理学家D.O.Hebb提出神经元之间突触联系是可变的假说——Hebb学习规律
人工神经网络历史回顾 • 第一高潮期(1950-1968) • 以Marvin Minsky, Frank Rosenblatt, Bernard Widrow等为代表人物,代表作是单级感知器 • 可用电子线路模拟 • 人们乐观地认为几乎已经找到了智能的关键。许多部门开始大批地投入此项研究,希望尽快占领制高点。
人工神经网络历史回顾 • 反思期(1969-1982) • Minsky和S.Papert, <Perceptron> MIT press, 1969 • 异或运算不可表示 • 20世纪70年代和80年代早期的研究结果 • 认识规律:认识-实践-再认识
人工神经网络历史回顾 • 第二高潮期(1983-1990) • 1982, J. Hopfield提出循环网络 • 用Lyapunov函数作为网络性能判定的能量函数,建立ANN稳定性的判别依据 • 阐明了ANN与动力学的关系 • 用非线性动力学的方法来研究ANN得特性 • 指出信息被存放在网络中神经元的联接上 • 1984年,J.Hopfield设计研制了Hopfield网的电路。较好地解决了著名的TSP问题,找到了最佳解的近似解,引起了较大轰动 • 1985年,Hinton,Sejnowsky, Rumelhart等人在Hopfield网络中引入了随机机制,提出所谓的Boltzmann机 • 1986年,Rumelhart等提出了多层网络的学习算法- BP算法,较好地解决了多层网络的学习问题。
人工神经网络历史回顾 • 再认识与应用研究期(1991~) • 问题 • 应用面还不够宽 • 结果不够精确 • 存在可信度的问题
人工神经网络历史回顾 • 再认识与应用研究期(1991~) • 研究 • 开发现有模型的应用,并在应用中根据实际情况对模型,算法加以改造,以提高网络的训练速度和运行的准确度 • 充分发挥两种技术各自的优势是一个有效的方法 • 希望在理论上寻找新的突破,建立新的专用/通用模型和算法 • 进一步对生物神经系统进行研究,不断地丰富对人脑的认识。
阈值逻辑单元(Threshold Logic Unit, TLU) • 一个TLU是一个对象,它可以输入一组加权系数的量,对它们进行求和,如果这个和达到或者超过了某个阈值,输出一个量 • 符号表示 • 有输入值以及它们的权系数:X1, X2, ..., Xn和 W1, W2, ..., Wn • 接着是求和计算出的 Xi*Wi,产生了激发层 a,换一种方法表示: a = (X1 * W1)+(X2 * W2)+...+(Xi * Wi)+...+ (Xn * Wn) • 阈值称为 theta。最后,输出结果 y。当 a >=theta 时 y=1,反之 y=0。请注意输出可以是连续的,因为它也可以由一个 squash 函数 s(或 sigma)判定,该函数的自变量是 a,函数值在 0 和 1 之间,y=s(a)。
神经元模型 w0 x0 = +1 x1 w1 Activation function Local Field v Input signal Output y x2 w2 Summing function Synaptic weights xm wm
TLU 的学习原理 • TLU 通过改变它的权系数和阈值来学习 • 在训练过程中,神经网络输入: • 一系列需要分类的术语示例 • 它们的正确分类或者目标 • <X1, X2, ..., Xn, theta, t>,这里 t 是一个目标或者正确分类。神经网络用这些来调整权系数,其目的使培训中的目标与其分类相匹配 • 有指导的或有监督的学习
理想化的学习算法 fully_trained = FALSE DO UNTIL (fully_trained): fully_trained = TRUE FOR EACH training_vector = <X1, X2, ..., Xn, theta, target>:: # Weights compared to theta a = (X1 * W1)+(X2 * W2)+...+(Xn * Wn) – theta y = sigma(a) IF y != target: fully_trained = FALSE FOR EACH Wi: MODIFY_WEIGHT(Wi) # According to the training rule IF (fully_trained): BREAK
训练规则 • 训练规则很多,但大都基于这样一种思想,即权系数和阈值的调整应该由分式 (t - y) 确定。这个规则通过引入 alpha (0 < alpha < 1) 完成。我们把 alpha 称为学习率。Wi 中的更改值等于 (alpha * (t - y)* Xi)。当 alpha 趋向于 0 时,神经网络的权系数的调整变得保守一点;当 alpha 趋向于 1 时,权系数的调整变得激进。
单层感知器的问题 • 如果取自两类模式A,B中的输入是线性可分的,单层感知器收敛 • 对于线性不可分并且还部分重叠时,收敛过程中决策面将不断震荡 • XOR问题
B2 A2 A1 B1
B2 A2 A1 B1
梯度下降方法 t为目标值,即所希望的响应值 f为 TLU对输入Xi的实际响应
问题 • 由于阈值函数的存在,TLU的输出f对于s而言不是连续可导的。 • 如何解决? • 忽略阈值函数,且令f=s • 用一个可求导的非线性函数代替此阈值函数
Widrom-Hoff • 令f=s, • 也称Delta规则
广义Delta过程 • Sigmoid函数来替换阈值函数 • Sigmoid函数:
纠错过程 • 保留阈值不变,仅当TLU的响应出错时,才调节权向量 • W=W+c(t-f)X
由前一层的输出作为输入i,与对应的权w相乘形成加权和,再加上偏置由前一层的输出作为输入i,与对应的权w相乘形成加权和,再加上偏置 • 对上面结果用一个非线性函数f作用形成本层的输出.将较大的值映射到0-1之间 • yk,tk分别表示输出层上节点k的实际输出和期望输出
BP算法修改权公式推导 • 分两种情况计算 • 节点k是输出层上的节点,此时Ok= yk • 节点k不在输出层,在隐藏层上
算法步骤(图形表示) Output vector Output nodes Hidden nodes wij Input nodes Input vector: xi
算法步骤(伪码表示1) • 算法: Backpropagation的神经网络分类学习 • 输入:训练样本samples, 学习率l,多层前馈网络network • 输出:一个训练后的可对样本分类的神经网络 • 方法: • 1) 初始化network的权和偏置 • 2) while 终止条件不满足{ • 3) for samples中的每个训练样本X{ • 4) //向前输入 • 5) for 隐藏层或输出层的每个单元j{ • 6) Ij=iwijOi+j; • 7) Oj=1/(1+e-Ij)}
算法步骤(伪码表示2) • //后向修改误差 • 8) for 输出层每个单元j • 9) Errj=Oj(1-Oj)(Tj-Oj); • 10) for 由最后一个到第一个隐藏层,对于隐藏层中的每个单元j • 11) Errj=Oj(1-Oj)kErrkwjk; • 12) for network中的每个权wij{ • 13) Wij=(l)ErrjOj; • 14) Wij=Wij+ Wij;} • 15) for network中的每个偏差j { • 16) j =(l)Errj; • 17) j = j + j;} }}
一个训练样本X={1,0,1},输出为1 • X1=1,x2=0,x3=1,w14=0.2,w15=-0.3,w24=0.4,w25=0.1,w34=-0.5,w35=0.2,w46=-0.3,w56=-0.2, • 偏置值:节点4:-0.4,节点5:0.2,节点6:0.1 • 学习率设为0.9
节点4: 输入值:w14*x1+w24*x2+w34*x3+节点4的偏置=1*0.2+0.4*0-0.5*1-0.4=-0.7 输出值:用公式 可得0.332 • 同理:节点5输入值0.1,输出值0.525 • 节点6: 输入值:w46*o4+w56*o5+节点6的偏置=-0.3*0.332-0.2*0.525+0.1=-0.105 输出值:0.474
误差计算 • 节点6: 0.474*(1-0.474)*(1-0.474)=0.1311 • 节点5: 0.525*(1-0.525)*0.1311*(-0.2)= -0.0065 • 同理节点4误差为:-0.0087
更新权值和偏置值 • W46: -0.3+(0.9)(0.1311)(0.332)=-0.261 • 其他Wij同理 • 节点6的偏置: 0.1+(0.9)*(0.1311)=0.218 • 其他偏置同理
更新 • 实例更新(Case update) • 每处理一个样本就更新权和偏置 • 周期更新(Epoch update) • 扫描训练集一次是一个周期. 权和偏置的增量可以累积到变量中,使得可以在处理完训练集中的所有样本之后再更新权和偏置
终止条件 • 对所有样本作一次扫描称为一个周期 • 终止条件:对前一周期所有Wij的修改值都小于某个指定的阈值;或超过预先指定的周期数. • 防止训练过度
BP算法学习过程 • 学习目的 • 对网络的连接权值进行调整,使得对任一输入都得到所期望的输出 • 学习方法 • 用一组训练样本对网络进行训练。每一个样本包括输入及期望的输出两部分。 • 训练时,先把样本的输入信息输入到网络中,由网络自第一隐含层开始逐层地进行计算,并向下一层传递,直至传至输出层,其间没一层神经元只影响到下一层神经元的状态。然后,以其输出与样例的期望输出进行比较,如果它们的误差不能满足要求,则沿着原来的连接通路逐层返回,并利用两者的误差按一定的原则对各层节点的连接权值进行调整,使误差逐步减小,直到满足要求为止。