linear classification notes:
该方法的组成:一个是评分函数:原始图像数据到类别分值的映射;
一个是损失函数:用来量化预测分类标签的得分和真实标签之间的一致性。
图像分类的任务是从已有的固定分类标签中选择一个并分配一张图像,我们介绍了KNN分类器,该分类器的基本思想是通过将测试图像和训练集带标签的图像进行比较,来给测试图像打上分类标签,knn分类器存在以下不足:
1,分类器必须能够记住所有的训练数据并将其存储起来,以便于未来测试数据用于
卷积神经网络之间层级结构案例:
最左边进行数据输入层,对数据做一些处理,比如去均值,把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果,归一化是把所有的数据都归一化的同样的范围, PCA、白化等。cnn只对训练集做去均值的一步。
从非严格意义上讲,sigmoid框起来的部分就可以看做的是一个滤波器。
在CNN中,滤波器filter对局部输入的数据进行卷积计算,每计算完一个数据窗口的局部数据后,数据窗口不断滑动,知道计算完所有的数据。这这个过程中,有那么几个参数:
a.深度depth 神经元的个数,决定输出的depth 的厚度,同时代表滤波器的个数 ;
b.步长strides:决定滑动多少步可以到达边缘
c.填充zero-padding:在外维边缘补充若干个圈0,方便从初始位置以步长为单位可以刚好滑动到末尾的位置通俗讲就是为了总长度能够被步长整除。
左边的数据在变化,每次滤波器都是针对某一个局部的数据窗口进行卷积,这就是所谓的CNN中的局部感知机制。
sigmoid 容易饱和,造成终止梯度传递,没有0中心化。
卷积神经ConvNet可以分为4层:
1.图像输入Image Input:为了后续BP算法复杂度一般是建议使用的是灰度图像。也可以使用RGB彩色图像,此时输入的图像是原始图像的RGB三通道、
2.卷积层 特征提取层特征映射层 将上一层的输出图像和本层卷积核加权值加偏置,通过sigmoid函数得到各个层,下采样为各个S层。
3.光栅化 以此排开
4.全连接多层感知机全连接
c层:特征提取层,每个神经元与前一层的局部连接域相连,获取该部分的特征。
局部感知 权值共享 下采样 提升了计算深度,减少了连接数量
CNN的物理含义
为了从原始图像中得到的C层,需要把原始图像中的每个像素都作为神经网络中的一个神经元,那么把原始输入图像一字排开,作为输入层。
滤波器卷积后在C1上产生了三个特征映射图,然后特征映射图中每组像素的再进行求和,加权和加偏置。通过一个sigmoid 函数产生三个S2层的特征映射图。
循环神经网络是非常流行的模型,这在NLP的很多的任务中已经展现了。
作为本教程的一部分,将会实现一个基于RNN的语言模型。语言模型有两个方面的作用。
第一:基于每个序列在现实世界中出现的可能性对其进行打分,实际上是提供了针对语法和语义正确性的度量。
第二:生成新文件
RNN的一个序列和下一个序列之间是相互有联系的。
x 为输入情况,s是对应t时刻的隐藏状态。在实际情况下是很复杂的。
与传统的深度神经网络不同每一层的使用不同的参数的做法不同,RNN在所有的时刻中共享相同的参数。这反应了在每一步中都在执行相同的任务,只是用了不同的输入,这就极大的减少了需要学习的参数的个数。
上面图中的每一时刻的都有输出,在具体的任务中,这可能是不必要的,例如在预测的一句话的情感的时候,我们关心的可能是最终的输出,并不是每个词之后的情感。相似的,可能并不是每一个时刻都需要输入,RNN主要特征使他的隐藏状态,可以捕捉一句话中的信息。
RNN能够做什么?
1,语言模型和文本生成
给定一个词的序列,我们想预测前面的词确定之后,每个词出现的概率。语言模型可以度量一个句子出现的可能性。 这可以组作为机器翻译的一个重要的输入,能够预测下一个词带来的额外的效果我们得到了一个生成模型。这可以让我们通过对输出概率采样来生成新的文本。根据训练数据的具体内容,我们可以生成任意的东西。在语言模型中,输入常常是词的序列,输出是预测得到的词的序列。
训练网络是设置。
机器翻译与语言模型相似,输入是源语言中的一个词的序列,输出的是目标语言的一个词的序列,一个关键不同点在接受到了完整的输入才会开始有输出,因为我们要翻译得到的句子的第一个词语可能需要前面的整个输入序列的信息。
RNN的训练:
训练RNN和训练传统神经网络相似,同样采用了反向传播算法,参数是共享的,每一次的梯度输出不仅依赖于当前时刻的计算结果,也依赖于之间所有时刻的计算结果。例如,为了计算t =4时刻的梯度,需要反向传播3步,并把前面所有的梯度加和。这被称作随时间的反向传播BPTT。
LSTM network最近非常流行,上面也简单讨论过,LSTM和RNN在结构上并没有本质上的不同,只是使用了不同的函数来计算隐藏状态。LSTM中的记忆单元被称为细胞,你可以把它当做黑盒,把之前的状态当前的记忆和输入结合起来,事实证明了这些类型的单元对于捕捉长期依赖十分重要。
RNN的训练和学习:
之前提到的CNN模型主要用到人类的视觉中枢,但是有一个劣势,无论是人类的视觉神经还是听觉神经,所接收到的都是一个连续的序列。最后及最后简化后的情况形式同一般的神经元相同,输入信息乘权重加偏置:
RNN种类:
1,sequence-to-sequence
2,sequence-to-vector
3,vector-to-sequence
4,encoder-decoder
这是一个delay的模型,经过一段时候延迟,即所有的输入都读取后,在decoder中获取输入并输出一个序列。这个模型在机器翻译中的使用比较广泛,源语言的输入放入在encoder,浓缩在状态信息中,生成目标语言时,可以生成一个不长度的目标语言序列。
Ctrl + B
Ctrl + I
Ctrl + Q
Ctrl + L
Ctrl + K
Ctrl + G
Ctrl + H
Ctrl + O
Ctrl + U
Ctrl + R
Ctrl + Z
Ctrl + Y
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]
使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Markdown Extra , 扩展了很多好用的功能。具体请参考Github.
Markdown Extra 表格语法:
项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
可以使用冒号来定义对齐方式:
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
定义 D
定义D内容
代码块语法遵循标准markdown代码,例如:
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
生成一个脚注1.
用 [TOC]
来生成目录:
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.
更多LaTex语法请参考 这儿.
可以渲染序列图:
或者流程图:
即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。