指针的一些疑问:为什么连续输出的p和(++p)的结果指向同一个数组的元素。。
void main(){
int arr[] = { 10, 20, 30,40,50 };
int *p = arr;
*(p++) += 100;
cout<< *p<<","<< *(++p);
cout << endl;
cout <<arr[0] << "," << arr[1] << "," << arr[2] << "," << arr[3] << "," << arr[4] <<endl;
system("pause");
}
2、EM算法与GMMs的学习;
EM算法是存在隐含变量时广泛使用的一种学习方法,可用于变量的值从来没有被直接观察到的情形,只要这些变量所遵循的概率分布的一般形式已知。
2.1 Gaussian Mixture Models (GMMs) 高斯混合模型
(1)高斯混合模型的概率密度公式:
当样本x维度为单维度时:
当样本x是多维度是:
(2)GMMS的参数估计;
当样本x(1),…,x(N)符合单一高斯分布假设时,很容易计算该分布的参数的极大似然假设。以其均值参数为例:
问题涉及k个不同高斯分布,而且不知道哪个样本是哪个分布(假设)产生的。这是一个隐参数模型;
每个样本的完整描述y(i)=[ x(i), zij ],其中x(n)是第i个样本的观测值, zij表示样本x(i)属于第j个正态分布;
(3)GMMS的参数估计-EM算法;
EM算法根据当前假设[u1…uk],迭代地(iteratively)估计隐含变量zij
的期望值,并用隐含变量的期望值重新计算极大似然假设
先将假设随机初始化为h=[ u1, …, uk]
计算每个隐含变量zij的期望值E[zij]
计算一个新的极大似然假设h’=[u’1, …, u’k],假定每个隐含变量zij所取值是第一步得到的期望值E[zij]。
将假设替换为h’=[u’1, …,u’k],然后循环迭代