Fenrier Lab

模式识别中的最小风险分类决策

前面这篇文章探讨的是使得分类错误率最小的分类原则。但当我们根据已知信息做分类的时候,不同的决策结果通常伴随着不同的风险,比如说在对人做病情诊断时,患病与不患病对应两种状态,我们假设分别为 \(\mathcal{C}_1\) 和 \(\mathcal{C}_2\) 。在诊断过程中收集到的病情特征用 \(x\) 表示,并且特征空间被分为两个部分 \(R_1\) 和 \(R_2\) ,当 \(x\in R_1\) 时,诊断为 \(\mathcal{C}_1\) ,即患病,否则诊断为 \(\mathcal{C}_2\) 未患病。 那么病情特征和诊断结果就有四种组合方式,这里用四个元组来表示,即 \[(x\in R_1, \mathcal{C}_2),\quad (x\in R_2, \ma...
点我阅读更多...

反向传播算法

本文的符号约定来自于 Andrew Ng 的 cs294a,推导过程参考边肇祺的《模式识别 第二版》。 上图是一个典型的前馈网络结构,定义训练集 \[S = \{(x^{(i)}, y^{(i)}) \mid i = 1,,,m\}\] 定义权重矩阵集,和偏置项集 \[W = \{W^i \mid i = 1,,,n_l\}, b = \{b^i\mid i = 1,,,n_l\}\] 图中隐藏层和输出层的单元被分隔成两部分,其中左边部分的 \(z^l\) 代表前一层单元的加权值 \[z^{l+1} = W^l a^l + b^l\] 右边的 \(a^l\) 则代表本单元的激活值 \[a^{l+1} = f(z^{l+1})\] 其中 \(f\) 为激活函数。在输...
点我阅读更多...

模式识别中的最小错误率分类决策

对于一个有监督的分类学习问题,如果我们把注意力仅集中在分类的对错上面,就自然会想到使用一个函数来度量分类的错误率,并且在学习的过程中尽量减小训练数据的分类错误率,这就是基于最小错误率的决策方法。 假设我们拿到了一组特征数据及其类别标签 \[S = \{(x_i, y_i)\mid i\in N^+, i\le n ,\, \,y_i \in \{\mathcal{C}_j\},\,j=1,2,,,k\}\] 也就是说,总共有 n 个特征,它们分属于 k 个类别。如果特征的维度是 d ,那么可以认为特征空间是一个 d 维实向量空间 \(R^d\) 的子集。分类行为其实就是在计算一个从特征空间到类别集合的映射,我们定义该映射如下 \[f:R^d \rightarrow C\] 这...
点我阅读更多...

Java 中的分代垃圾收集思想

程序员总是喜欢把繁琐的事情交给机器去自动执行,特别是具有固定模式的任务,大家都不愿意亲历亲为。而对于那些一眼看上去不存在什么通用特征的事情,就会努力去在更高的层次上去寻找它们的泛性。所以对于初学者来说,很多知识看起来抽象得不行,就是因为还没有从底层开始逐渐构造这些概念。 程序内存资源的管理逻辑很简单,一句话就是:不用的资源请释放出来。但是却很繁琐,对于程序员来讲,那么多代码,他怎么记得住自己在什么时候申请了多少内存?哪些资源以后还可能要用?哪些内存根本就不必回收?如果自己来手动管理内存,不知要浪费多少脑细胞,所以垃圾回收器这时候就帮了大忙了。 但是自动垃圾回收不可能像人的判断那样准确,所以它的宽容度其实是要高很多的。另一个特征是自动垃圾回收过程其实是独立于程序执行的,它不像把释放资...
点我阅读更多...

MKL 向量统计库 VSL 中的数据存储与索引风格的应用

由于 MKL 支持两种数据存储方式,在使用 VSL 进行统计计算的时候,可以使用参数 VSL_SS_MATRIX_STORAGE_ROWS 和 VSL_SS_MATRIX_STORAGE_COLS 来指定我们传入的数据布局为行存储或者列存储。但是我们一般习惯的是类 C 语言的行索引风格,所以这篇文章就来讨论一下如何使用 VSL 这两种风格的适当组合来适配计算矩阵的统计量。 一些约定 在写这篇文章的时候我发现很多概念模棱两可,如果不提前做好约定,不仅会让读者不知所云,也让我的思路很乱。这里我先把之后要用到的数据拿出来 这是著名的鸢尾花数据集,为了简便起见,我就只取了前三个样本。当我们要把这堆数据放到程序中的时候,自然会考虑用二维数组来存储 \[\left[ \begin{al...
点我阅读更多...