Fork me on GitHub

Other articles

  1. 论文笔记《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》

    0. 摘要


    1. 现有的卷积神经网络要求输入图片为固定尺寸,也就是说做用CNN图像识别时要对输入图像进行尺寸归一化,这样做可能会影响识别准确率。

    2. 在图像物体检测任务中,一般来说先需要对图像进行窗口扫描生成候选窗口,然后以窗口图像为输入逐个判断。这个过程中有很多重复计算:提取卷积特征(即全连接层之前的所有层)并不要求输入图像尺寸固定,所以单张图像实际上只需计算一遍卷积特征即可。

    本文要介绍的SPP-net便解决了上述两个问题,并在2014年ImageNet的物体检测比赛中取得第二名,图像分类比赛中取得第三名。

    1. DEEP NETWORKS WITH SPATIAL PYRAMID POOLING


    1.1 Convolutional Layers and Feature Maps

    常规的DeepCNN都要求输入图像尺寸固定,这是因为在全连接层中要求输入固定长度的特征向量,而全连接层之前的卷积pooling层并不严格要求输入图像的尺寸固定。卷积pooling层的输出尺寸比例基本和输入图像的尺寸比例一致,这些输出就是所谓的特征图(feature map)。特征图不仅仅反映输入图像对特征响应的强度信息,还反映出空间位置信息,如图1所示,图(a)中箭头位置对应图(b)filter中响应最强烈位置,图(c)中的绿色矩形区域对图(b)的filter有强响应 ...

    read more
  2. Python版Word2Vec 尝试

    0. 数据准备


    首先从搜狗全网新闻数据下载训练数据集,解压后用以下命令生成文件列表保存于文件“sougouCA_list.csv”中:

    find `pwd` -name "*.txt" > sougouCA_list.csv
    

    然后准备了一个中文停用词文档,文件中包含有“的、其中、例如”等2000多个中文停用词,每行一个,文件名“all_stopword.txt”。

    1. 训练模型


    1.1 读取停用词

    从文档中读取所有停用词,存放于一个集合中,届时用于查询某单词是否属于停用词。

    def get_stopWords(stopWords_fn):
        with open(stopWords_fn, 'rb') as f:
            stopWords_set = {line.strip('\r\t').decode('utf-8') for ...
    read more
  3. 论文笔记《Learning Multi-Domain Convolutional Neural Networks for Visual Tracking》

    0. 摘要


    基于CNN的一个跟踪算法,达到了state-of-art水平,意味着深度学习又占领了一个山头。本文中使用的网络由共享层(shared layers)和许多特定目标分支层组成。每一个分支层对应一个二分类的任务:确定输入样本是不是该分支对应的跟踪目标。当在一个新的图像序列中跟踪一个目标时,用一个新的二分类层连接共享层,作为新的跟踪网络,并实时在线微调。这个网络取名MDNet,具体细节看下文。

    1. Multi-Domain Network (MDNet)


    1.1 网络结构

    相比于AlexNet和VGG-Nets,作者使用了一个相对较小的网络来做跟踪,并解释了理由:

    1. 跟踪问题本质上只是个二分类的任务,对模型复杂度要求相对更低。

    2. 随着网络越来越深,空间信息越来越稀释,所以:对于图像中精准的目标定位,CNN并不是那么有效。

    3. 在跟踪任务中通常目标较小,所以输入大小(input size)也就小,网络结构自然也就更浅。

    4. 跟踪通常是一个实时任务,小网络显然更有效率。

    下图即MDNet网络结构,由共享层和K个特定目标分支层组成,黄色和蓝色的bounding boxes分别对应每个特定分支层的正样本和负样本。

    MDNet

    1.2 Learning Algorithm ...

    read more
  4. 机器学习算法之Adaptive Boosted Decision Tree

    0. 前言


    先回忆一下, 在随机森林中, 用bagging + decision tree训练了一堆小决策树,然后用投票的方式将这些树组合起来形成随机森林:

    rf

    那么AdaBoost是否也可以与决策树结合呢?

    1. Weighted Decision Tree Algorithm


    决策树中,对于输入数据是平等对待的,也就是说所有数据的权重是一样的。那么如果我们想要一个可以接受权重的决策树$DTree(\mathcal{D},u^{(t)})$,该怎么做呢?

    第一个方法就是修改决策树内部的error function,使每一个样本的error值乘上对应的权重:

    error

    但是这个方法要修改算法内部,更多的时候我们希望把决策树当成一个黑盒子。所以第二个方法就是在输入数据上动手脚:按照权重比例对数据进行采样。即权重更大的数据有更高的概率被采到。

    sampling

    2. AdaBoost


    简单的说AdaBoost是将一堆estimators线性组合起来,现在我们的base estimator ...

    read more
  5. 机器学习算法之Gradient Boost Decision Tree

    0. Gradient Boost


    在梯度下降方法中,每一次迭代分两步:第一步先找一个好的梯度方向,第二步决定在这个方向上走多远。而在Gradient Boosting中,同样是经过N次迭代,每次先找一个好的函数方向,然后决定在这个函数方向上走多远,如下图中$h(x_n)$即要找的函数方向,$\eta$决定在这个方向上走多远。

    gb

    1. 推导


    假设我们要用GradientBoost做回归,去L2为error measure:

    regression

    我们先看黄色部分的优化问题,经过泰勒展开一番推导:

    reduction

    我们得到了一个问题,求一个$h$使得上式后面那项越小越好。如果我们不对$h$的大小做限制,那么最终$h$会走向无穷大或无穷小:$h(x_n) = -\propto·(S_n-y_n)$。为了避免这样的情况我们给$h(x_n)$加一个限制:

    reg

    所以最终这个问题就演变成了:通过对余数 ...

    read more
  6. 深度学习之训练一个人脸性别分类器

    0. Whatever


    深度学习越来越火,人人都能玩!

    在本文中我将通过深度学习方法训练一个性别分类器,即给定一张人脸图像,判断其性别。

    本文使用的深度学习框架:基于TheanoKeras(github:keras

    1. Data Preprocess


    数据来源:互联网明星图片。男性照片25个类,共3690张;女性照片15个类,共4309张。所有图片经过人脸检测对齐归一化到141*165尺寸大小。样例如下:

    female-face

    生成图片路径和label文件格式如下:

    ...
    E:\face data\gender_pic\female\163\38243_big.jpg,0
    E:\face data\gender_pic\female\163\38244_big.jpg,0
    E ...
    read more
  7. 机器学习算法之K近邻(k nearest neighbors)

    1. K近邻算法

    什么是K近邻算法?简单的说就是:给定所有训练数据和一组测试数据之后,在训练数据中寻找离这组测试数据最近的K组邻居,根据这K组邻居的label来做voting/average,从而预测出测试数据的label。

    knn-sample

    如上图所示,绿色圆圈是测试数据,其余为训练数据。假设K == 3,即寻找离测试数据最近的三个邻居,如图中黑色实线圆中的三个邻居(两个红色三角形,一个蓝色正方形)。在这三个邻居中,少数服从多数,所以测试数据就被分类为红色三角形。假设K == 5,那虚线圆中的5个邻居就是离测试数据最近的5个邻居,里面有三个蓝色正方形和2个红色三角形,所以少数服从多数,测试数据被分类为蓝色正方形。

    2. 距离度量

    那么如何找到最近的K个邻居呢?换句话说,如何度量样本之间的距离?

    最常用的距离度量方式自然是欧式距离,类似的还有马氏距离。本质上来说,寻找最近的邻居无非就是寻找最相似的邻居,所以余弦相似度这类相似度度量方式也完全可以在此处使用。

    3. Search algorithms

    接下来介绍查找最近K个邻居的算法:Brute Force, K-D ...

    read more
  8. 机器学习算法之决策树(decision tree)

    modeling

    先简单地举一个例子,看看什么是决策树。以下是一棵分类树,决定下班后是否要观看机器学习公开课。

    DT

    我们可以看到从根节点开始往下会有分支,最终会走向叶子节点,得到分类结果。每一个非叶子节点都是一个特征,上图中共有三维特征。决策树是所有机器算法中与人脑处理问题方式最接近的算法,所以很好理解。一棵决策树可以被抽象成以下数学公式:

    DTmodel

    T是路径总数/叶子节点总数(上图中有6个叶子节点),g_t(x)base hypothesis,上图中是常量Y/Nq_t(x)可以理解成g_t(x)的权重,取值为1或0:

    is x on path t ? 1 : 0;
    

    我们也可以用递归的视角来看决策树:

    recursiveDTmodel

    G_c(x)是当前节点的子树:

    tree = (root, sub-trees)
    

    构建一棵决策树

    按照以下伪代码我们可以递归式地构建一棵决策树:

    function DecisionTree ...
    read more
  9. 机器学习算法之随机森林(Random Forest)

    机器学习算法之随机森林(Random Forest)

    转载请注明出处:BackNode

    随机森林作为两大ensemble methods之一,近年来非常火热,本文试图探讨一下其背后原理,欢迎指正!

    Bagging

    Bagging方法是ensemble methods中获得用于训练base estimator的数据的重要一环。 正如其名,Bagging方法就是将所有training data放进一个黑色的bag中,黑色意味着我们看不到里面的数据的详细情况,只知道里面有我们的数据集。然后从这个bag中随机抽一部分数据出来用于训练一个base estimator。抽到的数据用完之后我们有两种选择,放回或不放回。

    既然样本本身可以bagging,那么feature是不是也可以bagging呢?当然可以!bagging完数据本身之后我们可以再bagging features,即从所有特征维度里面随机选取部分特征用于训练 ...

    read more

Page 1 / 2 »

blogroll

social