神经网络"/>
基于Tensorflow学习神经网络
3.理论
-
概率论和统计学
-
数据分布
BernoulliDistribution(伯努利分布,是离散分布)
均匀分布概率密度函数:
均值:
方差:
n重伯努利分布, 即二项分布。
UniformDistribution(均匀分布)
均匀分布概率密度函数:
均值:
方差:
图示:
NormalDistribution(正态分布,高斯分布)
正态分布积分=1,其表达式为:
标准正态分布表达式():
TruncatedNormal Distribution(截断正态分布)
截断正态分布是限制变量x取值范围(scope)的一种分布。正态分布则可视为不进行任何截断的截断正态分布。
-
Bootstrap采样
Bootstrap的意思是靴带,来自短语:“pulloneself up by one′s bootstrap”,18世纪德国文学家拉斯伯(RudolfErich Raspe)的小说《巴龙历险记(或译为终极天将)》(Adventuresof Baron Munchausen)记述道:“巴龙掉到湖里沉到湖底,在他绝望的时候,他用自己靴子上的带子把自己拉了上来。”现意指不借助别人的力量,凭自己的努力,终于获得成功。
Bootstrap统计学习中一种重采样(Resampling)技术,从样本中抽样来评估样本,如何抽样评估?抽取的Bootstrap样本量相同,只是在抽样方式上采取有放回地抽,这样的抽样可以进行B次,每次都可以求一个相应的统计量/估计量,最后看看这个统计量的稳定性如何(用方差表示)。
-
Bagging
弱学习器同一个学习算法在来自同一分布的多个不同的训练数据集上训练得到的模型偏差可能较大。Bagging:统计学的一种方法,对于训练数据集进行N次bootstrap采样得到N个训练子集,用相同的学习算法得到N个参数,测试时用N个参数计算的结果投票【分类问题】或平均【回归问题】得到最终结果。
DropOut来自该思想。
-
Z-Score(统计学的一种方法,此处用于归一化)
.html
此处的归一化是均值方差归一化,使每一维数据满足正态分布,均值归一化成0,方差归一化成1。
,数据图像分别为:
优点:计算简单,速度快。tensorflow中BN和whitening都适用这种方法。
缺点:
不考虑不同维度间关系。
-
PCA(PrincipalComponent Analysis)主成分分析
.shtml
PCA(PrincipalComponentAnalysis)主成分分析,通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。
原理:PCA的目的是用较少的维度Y尽可能好的表示原始数据X{1、新数据尽量分散,减少特征损失(使数据Y方差尽可能大,方差越大特征越强,方差即协方差矩阵对角线);2、使不同维度之间相互独立(正交,则协方差=0,Y的不同维度间的协方差即协方差矩阵对角线以外的值)},即使转化为将Y的协方差矩阵对角化(Y未知,试图推导Y的协方差矩阵D与X的关系)。
令Y=PX,,其中C是X的协方差矩阵,问题转化为求P,使对角化。
线性代数特征分解=>转化为求C特征值D,特征向量P。
计算步骤:a、分别对每一维数据0均值化,求协方差矩阵C;b、对C求特征值,特征向量;c、将特征向量按对应特征值从大到小的顺序排列;d、取前K行组成矩阵P,Y= PX即降维后的数据。
PCA之于图像压缩
-
SVD(SingularlyValuable Decomposition)奇异值分解
误区:
1、分别对X和进行SVD分解,结果中Σ是不变的,只是U和交换;而分别对X和做PCA分析,特征值Λ是不同的。
2、用SVD做PCA时,SVD的输入X必须是去均值的,否则分解的结果无意义。X协方差矩阵的特征值Λ = 。
酉矩阵:n阶复方阵U的n个列向量是U空间的一个标准正交基,则U是酉矩阵(UnitaryMatrix)。
SVD(SingularlyValuableDecomposition)奇异值分解,,其中U是m×m阶酉矩阵;Σ是m×n阶非负实数对角矩阵;而,即V的共轭转置,是n×n阶酉矩阵。这样的分解就称作X的奇异值分解。
1.V的列组成一套对X的正交‘输入’的基向量。这些向量是的特征向量。
2.U的列组成一套对X的正交‘输出’的基向量。这些向量是的特征向量。
3.Σ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的‘膨胀控制’。这些是
及的特征值的非零平方根,并与U和V的行向量相对应。
X协方差矩阵的特征值和特征向量,计算如下:
已知:UV是酉矩阵(标准正交基),则;
条件:X是去均值的,则X的协方差矩阵,其中M是维度。对C特征值分解有
两中方法:
1、对X进行SVD分解计算特征值和特征向量,则:
,则
2、对X的协方差矩阵C进行SVD分解,则:
,则
另注意:由于,
U
和
V
都是的基向量组成的矩阵,显然有,则。
-
白化(Whitening,一种归一化方法)
步骤:1、PCA(特征值分解||SVD ,SVD直接对X分解不需要计算协方差矩阵)
2、数据投影到特征向量空间
3、投影数据/各自维度的标准差(特征值开方)
好处:使每一维数据都有相同的方差,还可以做特征降维。
缺点:需要SVD分解,计算量大。(tensorflow中的白化用的z_score,未考虑协方差,简化计算)
Z_Score和Whitening代码实现:
def_test_DataN():
defgenOriData():
"""生成原始数据"""
samplenum= 10000
mu= np.array([[3, 3]])
Sigma= np.array([[1, 0.5], [1.5, 3]])
R= np.linalg.cholesky(Sigma)
s= np.dot(np.random.randn(samplenum, 2), R) + mu
returns
defdrawData(s,i,title):
plt.subplot(2,2,i,facecolor=(0.8, 0.8, 0.8))
plt.title(title)
plt.gca().set_aspect(1)
#plt.axis([-10,10,-10,10])
scale= 6
plt.plot([-scale,scale],[0,0],lw=1,c = 'k',ls=':')
plt.plot([0,0],[-scale,scale],lw=1,c = 'k',ls=':')
plt.scatter(s[:,0],s[:,1],s=1)
return
s=genOriData()
#ori
drawData(s,i = 1,title='ori')
#mean_0
mean_= np.mean(s, axis=0)
ss= s - mean_
drawData(ss,i = 2,title='0_mean')
#z_score
std= np.std(s,axis=0)
ss= (s-mean_)/std
drawData(ss,i = 3,title='z_score')
#whitening-pca
#计算协方差----
#covMat= np.cov(s,rowvar = 0)
#U,S,V= np.linalg.svd(covMat);
#标准差=sqrt(S)
#S= np.sqrt(S)
#printS
#特征向量=U
#s= np.dot(s,U)
#不计算协方差----
s_= s-np.mean(s, axis=0)
U,S,V= np.linalg.svd(s_);
#标准差=S/sqrt(M-1)
M,N=s.shape
S= S/np.sqrt(M-1)
printS
#特征向量=V*
s= np.dot(s,V.transpose())
mean_= np.mean(s, axis=0)
ss= (s-mean_)/S
drawData(ss,i = 4,title='whitening')
plt.show()
return
-
Kmeans和 KNN(属于机器学习方法,不属于神经网络)
用法不同:Kmeans是一种聚类方法(未知数据聚K类),是非监督学习,KNN是一种基于数据统计的分类方法(基于已分类好的数据,对其它数据K人投票进行分类),是监督学习。
K的含义不同:Kmeans表示类别(分成K类),KNN表示投票范围(最近的K个数据进行投票)。
相同点:二者都用到了NN(NearsNeighbor,是最近邻,不是神经网络)算法,一般用KD树实现NN。
Kmeans
将数据聚类分成K类。大致步骤如下:1、取K值,取K个初始位置Pos_K 2、(欧氏距离等)聚类3、计算中心(质心等),并用中心替代Pos_K 4、循环迭代 (2-3),直到Pos_K不再变化。
K值不好确定。初始位置对聚类结果有影响。不同的计算方法产生不同的分类。
改进:初始点选取。
KNN
已有两组分类的数据(D_1,D_2),新来一批数据x应如何归类。大致步骤1、取K值2、计算离x最近的K个数据3、K中属于那个分类多,则x也属于那个类。改进:按距离×权重,距离小权重大。另外:两个类别数据若不是均匀采样可能会有问题。
K=3,属于红三角,K=5则属于蓝方框
疑问:KDTree?BallTree?brute-force?(生成树索引度量标准,避免重复计算)
-
贝叶斯法则朴素贝叶斯
/贝叶斯公式/9683982
贝叶斯法则
是A已发生的条件下B发生的概率,即已知A发生B的条件概率,也是A的后验概率。
是A、B同时发生的概率,即A和B的联合分布,显然有。
注意:不要把条件概率和计算当采用某个动作后会发生什么相混淆。条件概率:假设某个人说德语,那么他是德国人的条件概率是非常高的。动作先后:先把会说德语的人都选出了,再从里面选一个德国人,这个概率是比较低的,两种操作显然不一样。【随机选择的一个人会说德语他的国籍不会因此而改变】
=>链式法则:=>
=>贝叶斯公式:
B发生的概率也可表示为不同(如A、!A)下B发生的概率和,即。
=>贝叶斯公式:
应用:贝叶斯公式为利用搜集到的信息对原有判断进行修正提供了有效手段。在采样之前,先假设一个判断:先验概率【当无任何信息时,一般假设各先验概率相同,较复杂精确的可利用包括最大熵技术或边际分布密度以及相互信息原理等方法来确定先验概率分布】,然后通过采样到的行为修正先验概率。
朴素贝叶斯(NaiveBayesian Model,NBC)
例子错误较多,但有助于理解
朴素贝叶斯模型是一种广泛用于分类的模型。NBC模型需要有先验概率,且假设属性之间相互独立,该假设在实际应用中往往不成立,在属性相关性较小时,性能最为良好。
-
无偏估计 最大似然估计 贝叶斯估计最大后验估计
无偏估计
,n次样本计算的参数的平均值与实际θ相等。
最大似然估计(ML)
最大似然估计,就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值;即求似然函数的极大值点。可用于多次实验样本(如交叉验证)。
似然函数:,θ是要求的参数,X^(i)是第i次实验结果.
连乘不方便计算且可能下溢,可将最大似然估计等价转成对数连加(ln单调递增),即
最大似然估计:
特别对二项分布有:
贝叶斯估计
/
贝叶斯估计是以贝叶斯法则为理论基础,已知参数θ的先验概率分布P(θ)(如均匀分布、高斯分布等),通过贝叶斯规则,结合样本和先验概率,修正θ的分布。
通过观测到m个样本估计下一个样本的分布如下:
上式代入联合分布公式得:
则根据贝叶斯规则,m+1个样本修正θ的分布如下:
相对于最大似然估计区别:a.ML是θ的点估计(使L(θ)最大的θ),bayes估计是关于θ的全分布;
b.先验概率分布影响最后的参数分布,向偏好先验的区域偏移;c.当训练数据很有限时,贝叶斯方法通常泛化得更好,但是当训练样本数目很大时,通常会有很大的计算代价。
最大后验估计(MAP)
最大后验估计是贝叶斯估计的一种特殊形式,即
-
HMM(
隐马尔科夫模型
)MEMM
(最大熵马尔科夫模型)
HMM(
隐马尔科夫模型
)
.html
模型
:
一个会随时间
改变(隐态间的关系,
假设
后续的隐藏状态只受前一隐藏状态影响
A
)的隐藏状态
,在以一定概率
(隐藏状态与外在表现的关系
B
)
持续地影响它
可见的外在表现
。
隐形状态转换关系图和转换矩阵
隐性状态的表现分布图及分布概率矩阵
三要素
:
1.
隐藏状态
2.
外在表现
3.
变量间关系(
a.
初始态
π
b.
隐态间关系
A
c.
隐态及其表现关系
B
)
问题
:
HMM
模型,
N
个隐藏状态
,
给出观察序列
O
(T
个状态
)
,计算概率
P
(
O
|
λ
)
计算
:
1
.
基础方法,列出所有可能的隐藏
状态
序列
Q
,将每个
q
下出现
O
的概率累加。
计算量
,计算量太大
。
2.
前向法(递归)
,通过第
T-1
个状态概率,计算第
T
个状态的概率
。
初始化:
,是序列第
1
位中第
i
个隐态表现正确的概率
递归:
,
应用
:
1.
语音识别
、
手写识别(语音
&
图像是表态,实际文字序列是隐态),对应问题
1
。
缺点:
1.HMM
模型只有状态和其对应的表现上有直接依赖关系(如语义分割时,分割不止依赖单词,与行长、缩减、空格等也有关系)。
2.
学习的目标函数
P
(
隐藏状态
,
外在表现
)与预测的目标函数不匹配
P
(
隐藏状态
|
外在表现
)。
MEMM
(最大熵马尔科夫模型)
MEMM
模型是把无状态的最大熵模型和马尔科夫模型相结合
。
-
MCMC(马尔科夫链蒙特卡罗)
/
蒙特卡罗算法是通过大量随机采样计算得到近似结果,随着采样的增多,得到的结果是正确结果的概率逐渐加大。典型如求PI:落在圆中的点/落在其外接正方形内的点=PI/4.
蒙特卡罗算法步骤:
a)建立模型:针对问题建立概率统计模型,使问题转化为求模型的概率分布或者数字特征。
b)抽样统计:对模型中的随机变量建立抽样方法,得到足够的随机抽样,并对相关事件进行统计。
c)结果分析:对试验结果进行分析,给出所求解的估计及其精度(方差)的估计。
马尔科夫链:未来状态只与当前t时刻有关,一个非周期且任意状态联通的马氏链可以收敛到一个平稳分布,在收敛之前的一段时间,比如上面的前n-1次迭代,各个状态的边际分布还不能认为是稳定分布,所以在进行抽样估计的时候,应该把前面的这n-1个迭代值去掉(类似与找到无限循环小数的循环部分)。这个定理就是MCMC方法抽样的理论基础。基于马氏链做抽样的关键问题是如何构造转移矩阵P,使得平稳分布恰好是我们要的分布π(x)(如M-H算法,Gibbs抽样也可以看做M-H算法的一个特例)。
MCMC方法就是构造合适的马尔科夫链进行抽样(平稳分布)而使用蒙特卡洛方法进行积分计算。
-
CRF(条件随机场:ConditionalRandom Field)
随机场
随机场
:一组随机变量,他们样本空间一样,那么就是随机场。我们利用这些随机变量之间的依赖关系建模实际问题中的
相关关系:
实际问题中,我们可能只知道变量之间有相关关系,可以画出
关系图表(结构化概率模型,结构有时也是需要学习的,如结构学习:惩罚模型复杂度,优化模型)
,我们想知道其间的关系到底是多少,需要通过
实际数据训练出相关关系
,然后嵌入到图里,进行预测、
reference
等很多事情。
例如:语义分割中基于不同类别(
FCN
中即像素点与像素点)之间存在一定关系,通过
鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签
,来优化分割。举个简单的例子,“天空”和“鸟” 这样的像素在物理空间是相邻的概率,应该要比“天空” 和 “鱼” 这样像素相邻的概率大,那么天空的边缘就更应该判断为鸟而不是鱼(从概率的角度)。
马尔科夫随机场
(MRF
,即
无向图模型
)
马尔可夫独立性假设
:不直接连接的点之间相互独立,点与点相互影响,边传递信息。
满足马尔科夫独立性假设的随机场即马尔科夫随机场。
条件随机场(CRF∈ MRF)
条件随机场(CRF):是给定随机变量X条件下,随机变量Y的马尔可夫随机场。条件X即观测值。
全连接条件随机场(
DenseCRF
)
全连接条件随机场:二元势函数描述每一个像素与其他所有像素的关系,所以叫“全连接”。
线性链条件随机场(
linearchain CRF)
线性链接的条件随机场,如下:
另如何将
CRF
融合到
CNN
中
???
更多推荐
基于Tensorflow学习神经网络
发布评论