卷积神经网络与视觉识别-斯坦福CS231n课程笔记

    卷积神经网络的可视化与进一步理解

    中间的隐藏层对应于一定的特征的识别,能够通过训练找到对应于特定图像激活的神经元(偏向性),这些神经元的权重就对应于一定基底的选择性组合。但这些隐藏层只有特定的层次才有可视化的意义,如同我们的病理切片能够接受人体的一些病变,但只有特定的区域才更具特征性。这些层次就是数学的不动点。

    通过统计来提取特征,能够发现我们不知道的知识,这些特征的组合,可能就升维到我们能够理解的层次如人脸识别。我们可以继续升维,可以通过机器学习到我们不能理解的更高维度的特征。特征对应于一定的神经元激活模式,如同人类的刻板印象的形成,智子疑邻等等。这种特征,如同图片的风格,是可以迁移的

    循环神经网络RNN:

    以马尔科夫模型来理解,这是一个状态之间的转移,可以通过统计构造出转移概率矩阵,从而能够形成一定的序列。生物信息学使用马尔科夫模型来理解编码区和非编码区,也是通过计算这个概率。

    文本处理:如numpy读入文本数据,构建字典,建立索引和字母之间的映射,然后组织形成一定的数据集。经过RNN训练,可以生产各种有意义的文本,如诗歌,论文,代码。通过学习各种特征,学习到底层的机制,能够生成一定的复杂映射,能够和人类的一些状态具有一定的相似性,我们需要将这些特征值的模块抽象出来,形成各种有意义的单元。

    实现技巧:

    充分利用数据(数据增强如横向翻转等等,应用于数据不足的情况;和迁移学习可以减少新模型的训练的计算量,可以提取训练好的网络的某些层来作为特征筛选器,这些特征可以应用于不同领域,一般情况都不是从头开始训练,而是在这些训练好的模型进行微调。dropout层避免过拟合)、

    如何进行卷积并且快速计算,即忽略大规模矩阵运算的中间步骤,如strassen算法

    实现的细节,如GPU/CPU计算,计算的瓶颈,分布式训练

    训练CNN的大概流程:1加载图像和标签2通过CNN训练3通过CNN的输出和标签来计算损失函数的值4回传梯度更新CNN的各个参数

    深度学习开源库

    Caffe:Blob类存储数据,Layer转换blob的数据,Net多隐藏层,计算梯度,Solver使用梯度更新权重。不需要编程,prototxt存储各种参数

    1转换数据2定义网络3定义solver4训练。推荐使用:特征提取,对已有模型的微调

    Torch:tensor。推荐使用:与预训练模型的运用,编写自己的Layer

    Theano、;计算梯度。推荐使用:训练CNN

    Tensorflow:google开源框架。推荐使用:大模型的训练

    图像分割与注意力模型

    特征提取,并进行采样,组合结果制定一定的边界

    视频检测与无监督学习

    主成分分析PCA,通过聚类分析来找到隐藏的模式。神经网络提取的特征,就是统计得出的基底。

    自动编码器:用数据区学习特征,数据经过编码形成特征,再解码形成输出。

    贝叶斯推断。最大似然法。