1、感知器:输入加权值和,与阈值相比,超过则传递,否则不传递。
2、仿射和线性的区别
(线性)f(ax + by)= af(x)+ bf(y)
(仿射)f(x) = sum(wixi)+ b
3、多层感知器作为布尔函数
一层感知器就可以表达任意布尔函数,但是参数是指数级的。(深度很重要,固定深度会导致宽度过大。)
¥
支付方式
请使用微信扫一扫 扫描二维码支付
请使用支付宝扫一扫 扫描二维码支付
1、感知器:输入加权值和,与阈值相比,超过则传递,否则不传递。
2、仿射和线性的区别
(线性)f(ax + by)= af(x)+ bf(y)
(仿射)f(x) = sum(wixi)+ b
3、多层感知器作为布尔函数
一层感知器就可以表达任意布尔函数,但是参数是指数级的。(深度很重要,固定深度会导致宽度过大。)
神经网络作为通用逼近器:
激活函数
神经网络作为通用逼近器:
# 第二遍学习:
1.神经网络是通用函数的逼近器。
如果网络满足最小约束,也就是使用较少的参数你逼近拟合函数,效果未必那么好!
2.感知机,一般情况下:
3.偏置可以和放射项拼在一起,更加简洁。
4.前馈网络,输出不会反馈回输入。单向计算是单向的。非循环的。
5.网络的参数是权重和偏置。
6.已知一个目标函数,构建网络的过程就是,你拟合接近,最小化误差的过程。(网络学习)
7.从样本学习到的关系,并非是独一无二的。
8.Rosebaltt
9.阈值,直线,超平面。
10.感知机最早的模型可以理解为一个符号函数。
11.感知机的权重W与正样本的cos值是正,与负样本的cos值为负。因此,根据这个对W进行修正,就可以达到训练的效果。W+X,这的X是错误样本,就会将分类平面向正确方向靠拢。
12.如果数据线性可分,以上方法可以在有限的步数只能完成更新。(R/r)^2;
affine和linear的区别:
affine是translated linear hyperplane。
perception(bias)->soft perception->other activation function->multi-layer perception(only input layer and output layer)-> deep networks(depth: length og th elongest path from a source to a sink)
多层感知机(MLP)作为一个执行任意布尔运算的函数-> universal boolean function.
除了通常的与,或,非,MLP还能计算亦或,泛化与,泛化或等计算。
a boolean functio is just a truth table。
一个两层的MLP就可以实现任何布尔函数。实现其真值表即可。
卡诺图可以简化DNF公式,从而得到用来计算该布尔元算的所需最少的perception数量。
一般化的,如果我们只用一个隐层来表达布尔函数的话,那么最坏情况下,最多需要2^(n-1)个perception,n是输入的数量。
如果允许多层的话,那么在最坏情况下,我们只需要2 * (n - 1),实际上是用的xor运算来实现的。一个xor最少用2个perception就可以实现,(如果允许bias为小数的话,如果不允许,就需要三个)那么需要的层数是log_2 n.
这就是为什么需要深度网络的原因!!!减少参数才是关键!
实际情况会更复杂,如果我们要表达的是一个更复杂的函数,
hebbian learning的方案的问题:
不能进行减法,权重会一直增加。
Frank Rosenblatt:
提出权重,阈值,并且提供了权值更新的算法,实际上也是现在广泛使用的方法。
可以进行模拟 与,和,或,非操作
但是无法模拟亦或操作!
激活函数的进步,见证了神经网络的进步。
从不可导的阶跃函数,到sigmoid函数,到relu等等。提升了训练的效果
这些视频应该多看几次。
Karnaugh Map优点:
1、用Grid的形式来表示真值表,第一眼看起来很直观。
2、每个相邻的格子之间的只有一个bit位的差别。
3、简化了析取范式。
4、在第一层可以减少Neuron神经结点的数量。可以减少到3个神经元。
Karnaugh Map缺点:
1、在Karnaugh Map中找到最紧凑的Group组合是一个NP难的问题。
2、(Worst Case)当表示为一个棋盘格的时候,Karnough Map所需要的Neuron神经结点是最多的。下图需要8个单元。
Karnough Map 三维 6个变量的特性:
1、由4 x 4 x 4 =64 个小立方体组成,每一个立方体代表一种表达式,一种可能性。
2、Worst Case需要 8 x 4 = 32 个 Neurons。总结:2^(N-1)(指数型)
XOR 特性:
1、交换律。
2、结合律。
简化版的XOR运算只需要2个神经元。
每一个XOR运算可以只用3个神经元表示。这样将神经元数量由指数型降到了线形。2^(N-1) -> 3 x (N-1)。运用XOR的结合律可以讲,深度从N -> log(n)。
只有一个隐藏层的神经网络也可以拟合任意函数,但是隐藏层所需要的神经单元可能是无限多个。故为了降低神经元的数量,我们可以考虑增加神经网络的层数。如果我们限定了神经网络的深度,那么需要的神经元个数的上限是多少?无限大。所以当你在AC0级的基础上建立一个固定深度的神经网络的时候,理论上,神经元的个数并没有一个上限。并且这个网络可以很好地构成任一函数。
但是接下来,假设我们有这样一个网络,如果这个网络足够深,但我限制每一层中神经元的个数,那么这个神经网络是否绝对可以拟合任一函数呢?确实不能。所以当我提到一个神经网络足够用的时候,意味着它的层数足够深,并且每一层的神经元数目足够。这整个网络可以模拟一个具体的函数了。现在我们谈论的是模拟一个具体函数的能力,并不是意味着仅仅它才可以模拟这个函数。
我们应该怎样设计一个神经网络去计算着一个特定的函数?第一个问题就是我们如何使用一堆数字来表示我们的输入和输出。神经网络的基本结构是感知机,它数学公式是:z=权重×输入的结果+偏置项。这样就得到一个关于输入的仿射组合。
其次是如何构建一个神经网络来执行必要的函数。激活函数,这个函数用来处理输入的仿射组合,并且激活函数在大多数情况下可以将它看做一个感知机,因为它最初被定义为一个阈值函数或是正弦函数。(每次提到感知机的时候,你应该能想到输入数据的仿射组合,而这些输入数据是输入到激活函数中去的,即all输入×权重+偏置)。但这样写有些麻烦,每次都得加b,有个简单的方法即在输入向量里添加1,设想它就是输入变量里的一个额外部分,这样偏置就直接变成了这里的权重,z=all输入×权重。
前馈网络:输入的数据在第一层被运算,得到的结果传到第二层继续运算,一直到最后一层。信号永远不会返回到前面的任何单元,它是单向的、非循环的。
分歧函数告诉了网络输出值和每个x对应的真实想要的值之间的差值。
学习一个神经网络就和确定网络参数是一样的,这些需要确定的参数就是网络所需要的权重和误差。用来对目标函数进行建模。在实际中,不会知道g(x)的函数定义,所以我们将根据画出输入输出训练实例,并估计网络的参数,来使用这些实例来对输入输出关系进行拟合。
最简单的多层感知机模型实际上并没有多层的概念,甚至也没有层,就是一个感知机模型。我们有很多实例,在数轴中就是一个个蓝色红色的点点,我们需要通过这些数据学习能够产生不同输出的权重w和偏置项b,这样就可以找到一个超平面,来完美分开蓝色和红色的点。