精华内容
参与话题
问答
  • TS(Training Sequences)用于初始化bit align,symbol align,exchange PHY parameter。TS1主要检测PCIe链路配置信息,TS2确认TS1的检测结果 EIOS(Electrical Idle Ordered Set Sequence),Tx进入Electrical Idle之前...
    1. TS(Training Sequences)用于初始化bit align,symbol align,exchange PHY parameter。TS1主要检测PCIe链路配置信息,TS2确认TS1的检测结果
    2. EIOS(Electrical Idle Ordered Set Sequence),Tx进入Electrical Idle之前,必须发送EIOS,Electrical Idle状态下Tx差分电压接近0mV
    3. EIEOS(Electrical Idle Exit Ordered Set),在发TS1之前或linking training过程中会时不时发送一段低频的IEOS,用于Rx端的Electrical Idle exit circuitry可以检测到电路离开Electrical Idle状态
    4. FTS(Fast Training Sequence)序列主要使接受Rx重新获得bit/symbol lock
    5. SKIP序列,进行时钟补偿,补偿300ppm的漂移,PHY发送一定数量个字符之后必须发送SKIP序列,Elastic Buffer收到SKIP序列之后要补偿相差
    6. Receiver Detect序列,用于识别Rx是否上电,因为Rx上电阻抗50欧姆,不上电则有kΩ级别,发送一个脉冲波形,通过检测电流大小能检测到对端是否有设备
    7. Link Training and Status State Machine (LTSSM)
    8. Detect:检测远端阻抗以确定是否有设备
      a) Detect.Quiet时,Tx处于Electrical Idle状态,LinkUp清0,以及其他复位动作
      b) 只要有lane退出Electrical Idle,就进入Detect.Active,此时双方检测对端阻抗,确定是对端否有设备
      c) 只要有某条/几条lane的双方均检测到对端有Rx,则进入Polling,其他没有检测成功的lane进入Electrical Idle,一条lane也没有则回到Quiet
    9. Polling:发送和回复TS,bit lock,symbol lock,lane polarity在此阶段确定
      a) Polling.Active,Tx向对端发送1024个TS1(其中lane/link number均填为PAD),对端Rx接收到TS1后通过其Loopback发送回来
      b) 当我的Rx收到8个连续的TS1(compliance位为0,或Loopback位为1)或者收到8个TS2(可能两端设备LTSSM不同步,对方设备已经进入Polling.Configuration状态),这3种情况下我就进入Polling.Configuration
      c) Polling.Configuration:此时我的TX发送TS2(lane/link number为PAD,linkup为0
      d) 当我在Polling.Configuration时收到8个连续的TS2,并且在收到一个TS2之后再发出去16个TS2之后进入Configuration状态
      e) Polling.Active时发送的TS1序列为RX经loopback在由TX发出去的,所以收到的TS1和准备发送的TS1相同,而且两端设备异步发TS1;而Polling.Configuration是对端设备重新生成的序列,当两端设备都收齐TS2序列后,将基本同步进入Configuration状态。从这个角度说TS2序列是为了同步“异步发送的TS1”
      f) 另外还有Polling.Compliance(做均衡)/Polling.Speed(切速率)等子状态,很多设备不支持
    10. Configuration:Rx/Tx协商link number,lane number,当recovery出现错误没有进入L0也可能先进Configuration
      a) 首次从Polling进入Configuration时LinkUp=0,从recovery进入该状态是LinkUp=1
      b) Configuration.Idle时,PCIe链路设置完毕,当收到对端8个Idle序列并且向对端发送16个Idle序列之后将LinkUp值1,数据链路层从DL_Inactive进入DL_Init,物理层进入L0
    11. Recovery:用于切换data rate,或者从L0经过Recovery.Rcvrlock再到Configuration去切换link width,此时bit lock,symbol lock,block alignment会重新建立
      a) 如果设备希望切速率,系统软件置directed_speed_change=1,然后进入Recovery.Rcvrlock,同时向对端发送TS1(link/lane number都是之前协商好的值,speed change bit为1)
      b) 对端接到8个speed change bit=1的TS1之后也发送speed change bit=1的TS1
      c) 两个设备发送TS1的同时检测接收的TS1,如果连续收到8个TS1或TS2(对端已经进入rcvrcfg),并且speed change bit与directed_speed_change位相同,则进入recovery.rcvrvfg
      d) Recovery.rcvrcfg:发送TS2序列进行同步(与polling.configuration阶段相同,TS2来同步两端的设备都进入xxxxcfg阶段)。通过比较speed_change位与directed_speed_change位是否相同,决定进入recovery.speed还是recovery.idle
      e) 如果标志位都是0表明切换过速率了,就进入recovery.idle,反之进入speed状态
      f) Recovery.idle之后进入L0或其他状态
      g) 另外recovery.equalization子状态又有3个Tx equalization子状态
      h) L0进Recovery之后进configuration切换link width的情况有
      i. 设备在L0时希望切宽度,系统软件置upconfigure_capable=1,设备进入recovery.rcvrlock,并且检测到directed_speed_change=0,说明是设备向切宽度而不是速度,然后进入configuration
      ii. Recovery.rcvrcfg时TS2的lane/link number不一致,会进入configuration
    12. L0:正常工作状态,此时才会有TLP。L0进入recovery有5种情况
      a) 当两端都支持高速率,并且系统软件将directed_speed_change置1
      b) 想切link宽度,系统软件置upconfigure_capable=1,
      c) 正常工作的lane中又收到对端发送TS1/TS2,说明对端想改速度或者宽度并进入recovery了;或者对方发EIOS进入Electrical Idle,
      d) 任意一条lane都没有收到EIOS,但是推断对方所有lane都进入了Logical Idle状态。If Electrical Idle is detected/inferred on all Lanes 40 without receiving an EIOS on any Lane,
      e) Link errors:Framing Errors, loss of Block Alignment, Elasticity Buffer Overflow/Underflow, or loss of Lane-to-Lane de-skew会导致LTSSM从L0跳转到Recovery
      f) 在PCIe链路中,只要一方进入recovery,对方就会收到TS1,两端都将进入recovery
    13. L0s/L1/L2:省电模式
    14. Disabled/Loopback/Hot Reset等其他状态
    15. 一些重要的点
      a) Link Width协商只存在于Configuration阶段,Recovery/L0无法改变;
      b) Link Speed在Polling阶段都是2.5G,只会在Recovery阶段发生变化;
      c) 切速度只会在recovery阶段,切宽度只会在configuration阶段
      d) LinkUp状态位在首次进入Configuration状态为0,之后Recovery/L0以及再次进入Configuration都是1;
      e) Link training在Configuration/Recovery阶段为1,其他阶段为0
    展开全文
  • Training--开始

    2014-07-03 13:53:29
    开始   欢迎进入安卓开发者网站的培训课程。这些课程各式各样,并且附上了程序源代码,你可以查看或者在你的app里复用。这些课程被组织成了如下部分:   1. 建立你的第一个APP ...前提你需要安装了SDK,然后利用...

    开始

     

    欢迎进入安卓开发者网站的培训课程。这些课程各式各样,并且附上了程序源代码,你可以查看或者在你的app里复用。这些课程被组织成了如下部分:

     

    1.      建立你的第一个APP

    前提你需要安装了SDK,然后利用本课程你可以学到安卓开发的基本知识。

    1) 创建工程;

    2) 运行就用;

    3) 创建简单的用户界面;

    4) 启动另一个Activity;

     

    2.      添加Action Bar

    Action Bar是对于你的应用里的activity非常重要的部分,首次引入是在API level 11。如果想在运行Android 2.1或者更高版本的设备上使用的话,请使用支持库。

    1) 设置Action Bar;

    2) 添加Action按钮;

    3) 风格化Action Bar;

    4) 叠加Action Bar;

     

    3.      支持不同的设备

    这里告诉你如何在一个APK里,使用不同的资源在各种设备上提供一致的优良的用户体验。

    1) 支持多语言;

    2) 支持不同屏幕大小;

    3) 支持多平台版本;

     

    4.      管理Activity生命周期

    简述了Activity如何创建、运行和销毁。通过实现生命周期回调函数来为用户提供流畅的用户体验。

    1) 启动一个Activity;

    2) 暂停和继续一个Activity;

    3) 停止和重启一个Activity;

    4) 重建一个Activity;

     

    5.      使用Fragment来构建动态UI

    阐述了如何利用fragment来构建一个足够灵活的UI,以便同时适应手机或者平板,决定显示全部或者部分UI组件。

    1) 创建Fragment;

    2) 构建灵活的UI;

    3) 与其他Fragment通信;

     

    6.      保存数据

    阐述了如何在设备上保存数据,这些数据可能是临时文件,下载的资源,媒体文件,结构化的数据(比如XML文件,个人理解)和其他东西。

    1) 保存键值对;

    2) 保存文件;

    3) 在SQL数据库中保存数据;

     

    7.      与其他app交互

    阐述了如何利用设备上其他的APP完成一些高级的事情,例如捕获图像或者在地图上查看地址。

    1) 引导用户跳转到其它APP;

    2) 从其他Activity得到结果;

    3) 允许其他APP启动你的Activity;

     

    展开全文
  • Co-training 初探快切入

    千次阅读 2016-11-22 11:30:21
    co-training方法是一类半监督方法,是一个框架,核心就是利用少量已标记样本,通过两个(或多个)模型去学习,对未标记样本进行标记,挑选most confidently的样本加入已标记样本阵营。 目前主要存在两种方法:single...

    先做个总结

    1. co-training方法是一类半监督方法,是一个框架,核心就是利用少量已标记样本,通过两个(或多个)模型去学习,对未标记样本进行标记,挑选most confidently的样本加入已标记样本阵营。
    2. 目前主要存在两种方法:single-view 和 multi-view。最开始提出的是multi-view,就是对特征进行拆分,使用相同的模型,来保证模型间的差异性。后来论证了single-view方法,也就是采用不同种类的模型,但是采用全部特征,也是可以的。基于后一种方法,好多开始做集成方法,采用boosting方式,加入更多分类器,当然也是可以同时做特征的采样。
    3. co-training的性能是受选定的模型的影响的,比如分类任务,虽然是用多个弱分类器集成co-train,但是太弱也不行。要知道是把分类器对未知样本进行分类的结果作为label放入标记训练集里,分类器的结果不能代表ground truth,加进去后性能可想而知。下文有篇论文给出了Navie Bayes和SVM的差异,一个用co-training性能下降,起反作用,一个能提升性能(虽然很有可能是鬼扯)。
    4. 主要是处理数据集中,已标记样本少,或者标记不均衡,又想利用全部数据(未标记的样本)

    以下是具体看论文的笔记,由于专注于了解这个领域,很多都略过,直接看任务和方法,处理什么问题,怎么处理之类的。

    Active + Semi-Supervised Learning = Robust Multi-View Learning

    I MusleaS MintonCA Knoblock - ICML, 2002 - researchgate.net

    We first show that existing semi-supervised algorithms are not robust over the whole spectrum of parameterized problems. Then we introduce a new multi-view algorithm, Co-EMT, which combines semi-supervised and active learning. Co-EMT outperforms the other algorithms both on the parameterized problems and on two additional real world domains. Our experiments suggest that Co-EMT’s robustness comes from active learning compensating for the correlation of the views.


    相关方法的列举



    Co-EM比较有意思,一个模型的M步得到的模型(其实是很调参),给另一个模型作为E步


    文章中扯到了一个概念(好像是自己定义的) clumpiness    ,没看懂,先跳过

    直接看论文提出的方法



    论文给出方法来源是 Co-Testing + Co-EM = Co-EMT

    其实是加上Active Learning,对于模棱两可,模型结果不一致的样本,让人去标


    Combining Labeled and Unlabeled Data with Co-Training

    A BlumT Mitchell - Proceedings of the eleventh annual conference on …, 1998 - dl.acm.org
    Speci cally, the presence of two distinct views of each example suggests strategies in which two learning algorithms are trained separately on each view, and then each algorithm's predictions on new unlabeled examples are used to enlarge the training set of the other. 


    Email Classification with Co-Training

    Proceedings of the 2011 Conference of the …, 2011 - dl.acm.org
    The main problems in text classification are lack of labeled data, as well as the cost of labeling the unlabeled data.
    We address these 
    problems by exploring co-training -
    an algorithm 
    that uses unlabeled data along with a few labeled examples to boost the performance of a classifier.
    We experiment with co-training 
    on the email domain.
    Our results show that 
    the performance of co-training depends on the learning algorithm it uses.
     In particular, Support 
    Vector Machines significantly outperforms Naive Bayes on email classification.  
    目的就是通过boost方法,用多个分类器扩充训练样本(标记样本)

    Sometimes features describing the data are redundant for a given task,
    so that we can classify 
    an example having only one set of features or another.
    Such sets of features are called 
    redundantly sufficient”.  
    有些时候只需要少量其中基本特征就能做处理,特征可能会有冗余


    co-traning的算法框架,太眼熟了不是么,就是上面的!通过分类器C_i不断的挑选most confidently 样本,作为已知样本加入训练集
    文中用了两类分类器,Naive Bayes 和 SVM,直接看结果

    从上面两幅图不难看出,NB方法,在加入新标记样本后,在5-10轮可能会有小量的提升,但是总体是下降,也就是说通过co-training加入新标记样本影响的精度
    但是SVM却是一直提升的情况,所有这就是这篇文章说的 co-training很受使用的模型的影响。(写文章的艺术,呵呵)

    DCPE co-training for classification

    Neurocomputing, 2012 - Elsevier
    Co-training is a well-known semi-supervised learning technique that applies two basic learners to train the data source, which uses the most confident unlabeled data to augment labeled data in the learning process. 
    co-training这一类方法本质上说是半监督学习方法,利用两个或更多个分类器学习,扩充标记数据。

    Briefly speaking, in co-training process, two learners work together to select the most confident unlabeled data to predict their labels. Then the unlabeled data with predicted labels are treated as new training data, and the process of prediction labels can be called label recovery [8]. The larger diversity or disagreement between the classifiers, the better performance can be obtained [9]. In its original form, co-training establishes two classifiers separately by learning on two sufficient and redundant views (feature subsets) of the data set. Co-training utilizes the diversity between two views of the data sets to perform the label propagation. Some co-training style algorithms, without the requirement of two views, have also been proposed recently [10,11]. These approaches suggested that co-training can use the diversities [12,13] between learners to recover the labels for the unlabeled training data
    为了保证所用的模型之间的差异性,一般有两种方法来保证:
    1. 随机抽样特征子集(就像随机森林等集成方法一样),文中用词sufficient and redundant views (feature subsets) of the data set,但是前提是特征能够被划分,这种划分特征空间的叫做multi-view
    2. 不同种类的学习模型, 这种方式被叫做single view co-training,
    3. 文中还提到一种方法,没有细看。 Randomness isanewmethodtocreatethediversityin co-training. TherandomnessenabledCo-Forest [32] to esti- mate theconfidenceofrecovereddataandmaintainthe diversity inthelearningprocess.Co-Forestalgorithmhasbeen successfully usedinmedicaldiagnosis. 







    la和lb都是数据集,不断的从未标记数据集中选取u个放进带处理的集合U‘中,当size(U)>u是,用模型hA和hB对待处理集合U'做分类,按7和8中方法挑选confidence样本,作为新的标记样本分别放入la和lb中,扩充hA和hB的训练数据集

    看完后,是不是感觉都差不多,时间跨度这么大,这么多人分这个坑。是的,表示很无语。。

    展开全文
  • 深度学习:Pre-Training的理解

    千次阅读 2017-02-28 14:02:00
    Logistic回归、传统多层神经网络 1.1 线性回归、线性神经网络、Logistic/Softmax回归 线性回归是用于数据拟合的常规手段,其任务是优化目标函数: 线性回归的求解法通常为两种: ①解优化多元一次方程(矩阵)的...

    转自(非常感谢原文作者) http://www.cnblogs.com/neopenx/p/4575527.html

    Logistic回归、传统多层神经网络

    1.1 线性回归、线性神经网络、Logistic/Softmax回归

    线性回归是用于数据拟合的常规手段,其任务是优化目标函数:


    线性回归的求解法通常为两种:

    ①解优化多元一次方程(矩阵)的传统方法,在数值分析里通常被称作”最小二乘法",公式:


    ②迭代法:有一阶导数(梯度下降)优化法、二阶导数(牛顿法)。

    方程解法局限性较大,通常只用来线性数据拟合。而迭代法直接催生了用于模式识别的神经网络诞生。

    最先提出Rosenblatt的感知器,借用了生物神经元的输入-激活-传递输出-接受反馈-矫正神经元的模式,将数学迭代法抽象化。

    并且在线性回归输出的基础上,添加了输出校正,通常为阶跃函数,将回归的数值按正负划分。

    为了计算简单,此时梯度下降优化法被广泛采用,梯度优化具有计算廉价,但是收敛慢的特点(一次收敛,而牛顿法是二次收敛)。

    为了应对精确的分类问题,基于判别概率模型P(Y|X)被提出,阶跃输出被替换成了广义的概率生成函数Logistic/Softmax函数,从而能平滑生成判别概率

    这三个模型,源于一家,本质都是对输入数据进行线性拟合/判别,当然最重要的是,它们的目标函数是多元一次函数,是凸函数

    1.2 双层经典BP神经网络

    由Hinton协提出多层感知器结构、以及Back-Propagation训练算法,在80年代~90年代鼎盛一时。

    经过近20年,即便是今天,也被我国各领域的CS本科生、研究生,其他领域(如机械自动化)学者拿来吓唬人。

    至于为什么是2层,因为3层效果提升不大,4层还不如2层,5层就太差了。[Erhan09]

    这是让人大跌眼镜的结果,神经网络,多么高大上的词,居然就两层,这和生物神经网络不是差远了?

    所以在90年代后,基于BP算法的MLP结构被机器学习界遗弃。一些新宠,如决策树/Boosing系、SVM、RNN、LSTM成为研究重点。

    1.3 多层神经网络致命问题:非凸优化

    这个问题得从线性回归一族的初始化Weight说起。线性家族中,W的初始化通常被置为0。

    如果你曾经写过MLP的话,应该犯过这么一个错误,将隐层的初始化设为0。

    然后,这个网络连基本的异或门函数[参考]都难以模拟。先来看看,线性回归和多层神经网络的目标函数曲面差别。

    线性回归,本质是一个多元一次函数的优化问题,设f(x,y)=x+y

    多层神经网络(层数K=2),本质是一个多元K次函数优化问题,设f(x,y)=xy

    值得一提的是,SVM是个K=2的神经网络,但是Vapnik转换了目标函数,将二次优化变成了二次规划。

    相对于盲目搜索的优化问题,规划问题属于凸优化,容易搜到精确解。但是缺陷是,没人能将三次优化变成三次规划。

    也就是说,K>=3的神经网络,如果训练到位,是可以轻松超越SVM的。

    在线性回归当中,从任意一个点出发搜索,最终必然是下降到全局最小值附近的。所以置0也无妨。

    而在多层神经网络中,从不同点出发,可能最终困在(stuck)这个点所在的最近的吸引盆(basin of attraction)。[Erhan09, Sec 4.2]

    吸引盆一词非常蹩脚,根据百度的解释:它像一个汇水盆地一样,把处于山坡上的雨水都集中起来,使之流向盆底。

    其实就是右图凹陷的地方,使用梯度下降法,会不自觉的被周围最近的吸引盆拉近去,达到局部最小值。此时一阶导数为0。从此训练停滞。

    局部最小值是神经网络结构带来的挥之不去的阴影,随着隐层层数的增加,非凸的目标函数越来越复杂,局部最小值点成倍增长。[Erhan09, Sec 4.1]

    因而,如何避免一开始就吸到一个倒霉的超浅的盆中呢,答案是权值初始化。为了统一初始化方案,通常将输入缩放到[1,1]

    经验规则给出,,Uniform为均匀分布。

    Bengio组的Xavier在2010年推出了一个更合适的范围,能够使得隐层Sigmoid系函数获得最好的激活范围。[Glorot10]

    这也是为什么多层神经网络的初始化隐层不能简单置0的原因,因为0很容易陷进一个非常浅的吸引盆,意味着局部最小值非常大。

    糟糕的是,随机均匀分布尽管获得了一个稍微好的搜索起点,但是却又更高概率陷入到一个稍小的局部最小值中。[Erhan10, Sec 3]

    所以,从本质上来看,深度结构带来的非凸优化仍然不能解决,这限制着深度结构的发展。

    1.4 多层神经网络致命问题:Gradient Vanish

    这个问题实际上是由激活函数不当引起的,多层使用Sigmoid系函数,会使得误差从输出层开始呈指数衰减。见[ReLu激活函数]

    因而,最滑稽的一个问题就是,靠近输出层的隐层训练的比较好,而靠近输入层的隐层几乎不能训练

    以5层结构为例,大概仅有第5层输出层,第4层,第3层被训练的比较好。误差传到第1、2层的时候,几乎为0。

    这时候5层相当于3层,前两层完全在打酱油。当然,如果是这样,还是比较乐观的。

    但是,神经网络的正向传播是从1、2层开始的,这意味着,必须得经过还是一片混乱的1、2层。(随机初始化,乱七八糟)

    这样,无论你后面3层怎么训练,都会被前面两层给搞乱,导致整个网络完全退化,真是连鸡肋都不如。

    幸运的是,这个问题已经被Hinton在2006年提出的逐层贪心预训练权值矩阵变向减轻,最近提出的ReLu则从根本上提出了解决方案

    2012年,Hinton组的Alex Krizhevsky率先将受到Gradient Vanish影响较小的CNN中大规模使用新提出的ReLu函数。

    2014年,Google研究员贾扬清则利用ReLu这个神器,成功将CNN扩展到了22层巨型深度网络,见知乎

    对于深受Gradient Vanish困扰的RNN,其变种LSTM也克服了这个问题。

    1.5 多层神经网络致命问题:过拟合

    Bengio在Learning Deep Architectures for AI 一书中举了一个有趣的例子。

    他说:最近有人表示,他们用传统的深度神经网络把训练error降到了0,也没有用你的那个什么破Pre-Training嘛!

    然后Bengio自己试了一下,发现确实可以,但是是建立在把接近输出层的顶隐层神经元个数设的很大的情况下。

    于是他把顶隐层神经元个数限到了20,然后这个模型立马露出马脚了。

    无论是训练误差、还是测试误差,都比相同配置下的Pre-Training方法差许多。

    也就是说,顶层神经元在对输入数据直接点对点记忆,而不是提取出有效特征后再记忆

    这就是神经网络的最后一个致命问题:过拟合,庞大的结构和参数使得,尽管训练error降的很低,但是test error却高的离谱。

    过拟合还可以和Gradient Vanish局部最小值混合三打,具体玩法是这样的:

    由于Gradient Vanish,导致深度结构的较低层几乎无法训练,而较高层却非常容易训练。

    较低层由于无法训练,很容易把原始输入信息,没有经过任何非线性变换,或者错误变换推到高层去,使得高层解离特征压力太大。

    如果特征无法解离,强制性的误差监督训练就会使得模型对输入数据直接做拟合。

    其结果就是,A Good Optimation But a Poor Generalization,这也是SVM、决策树等浅层结构的毛病。

    Bengio指出,这些利用局部数据做优化的浅层结构基于先验知识(Prior): Smoothness

    即,给定样本(xi,yi),尽可能从数值上做优化,使得训练出来的模型,对于近似的x,输出近似的y。

    然而一旦输入值做了泛型迁移,比如两种不同的鸟,鸟的颜色有别,且在图像中的比例不一,那么SVM、决策树几乎毫无用处。

    因为,对输入数据简单地做数值化学习,而不是解离出特征,对于高维数据(如图像、声音、文本),是毫无意义的

    然后就是最后的事了,由于低层学不动,高层在乱学,所以很快就掉进了吸引盆中,完成神经网络三杀。

     

    特征学习与Pre-Training

    2.1 Local Represention VS Distrubuted Represention

    经典的使用Local Represention算法有:

    ①在文本中常用的:One-Hot Represention,这种特征表达方式只是记录的特征存在过,

    而不能体现特征之间的关联( 比如从语义、语法、关联性上)。且特征表示过于稀疏,带来维数灾难。

    ②高斯核函数:看起来要高明一些,它将输入悬浮在核中心,按照距离远近来决定哪些是重要的,哪些是不重要的。

    将特征转化成了连续的数值,避免了表达特征需要的维数过高。但是正如KNN一样,片面只考虑重要的,忽视不重要的,

    会导致较差的归纳能力,而对于高度特征稠密的数据(如图像、声音、文本),则可能都无法学习。

    ③簇聚类算法:将输入样本划分空间,片面提取了局部空间特征,导致较差的归纳能力。

    ④决策树系:同样的将输入样本划分空间问题。

    以上,基本概括了数据挖掘十大算法中核心角色,这说明,数据挖掘算法基本不具备挖掘深度信息的能力

    相比之下,处理经过人脑加工过的统计数据,则更加得心应手。

    因而,模式识别与数据挖掘的偏重各有不同,尽管都属于机器学习的子类。

    为了提取出输入样本模式中的泛型关联特征,一些非监督学习算法在模式识别中被广泛使用,如PCA、ICA。

    PCA的本质是:[Input]=>(Decompose)[Output][LinearBase]

    即线性分解出特征向量,使得输入->输出之间做了一层线性变换,有用的关联特征信息被保留,相当于做了一个特征提取器。

    分解出来的特征称之为Distrubuted Represention,NLP中词向量模型同样属于这类特征。

    RBM、AutoEncoder的本质是:[Input]=>(Decompose)[Output][NonLinearBase]

    显而易见,非线性变换要比线性变换要强大。

    2.2 判别模型与生成模型

    这是个经典问题,非监督学习的生成模型P(X)和监督学习的判别模型P(Y|X)之间的关系,到底是亲兄弟,还是世仇呢?

    这个问题目前没有人能给出数学上解释,但是从生物学上来讲,肯定是关系很大的。

    尽管CNN目前取得了很大的成功,但是也带来的很大忧虑,[知乎专栏]的评论区,看到有人这么评论:

    Ng说,你教一个小孩子认一个苹果,是不会拿几百万张苹果的图给他学的

    如果两者之间没有关系,那么P(X)初始化得出的参数,会被之后P(Y|X)改的一团糟,反之,则只是被P(Y|X)进行小修小改。

    Hinton在DBN(深信度网络)中,则是利用此假设,提出了逐层贪心初始化的方法,进行实验:

    ①Stage 1:先逐层用RBM使得参数学习到有效从输入中提取信息。进行生成模型P(X)。(Pre-Training)。

    ②Stage 2:  利用生成模型得到的参数作为搜索起点,进行判别模型P(Y|X)。(Fine-Tuning)。

    [Erhan10 Sec6.4]将Stage1、Stage2、纯监督学习三种模型训练到完美之后的参数可视化之后,是这个样子:

    可以看到,由于Gradient Vanish影响,较高层比较低层有更大的变动。

    但是从整体上,Fine-Tuning没有太大改变Pre-Training的基础,也就是说P(Y|X)的搜索空间是可以在P(X)上继承的。

    2.3 殊途同归的搜索空间

    神经网络的目标函数到底有多复杂,很难去描述,大家只知道它是超级非凸的,超级难优化。

    但是,带来的一个好处就是,搜索到终点时,可能有几百万个出发起点,几百万条搜索路径,路径上的权值有几百万种组合。

    [Erhan09 Sec4.6]给出了基于Pre-Training和非Pre-Training的各400组随机初始化W,搜索输出降维后的图示,他指出:

    ①Pre-Training和非Pre-Training的模型参数,在搜索空间中,从不同点出发,最后停在了不同的搜索空间位置。

    ②散开的原因,是由于陷入的吸引盆的局部最小值中,明显不做Pre-Training,散开的范围更广,说明非常危险。

    可以看到,尽管两种模型取得了近似的train error和test error,但是搜索空间是完全不同的,参数形成也不同的。

    从图论的网络流角度,多层神经网络,构成了一个复杂的有向无环流模型:

    原本最大流模型下,每个结点的流量就有不同解。但是神经网络的要求的流是近似流,也就是说,近似+不同衍生出更多不同的解。

    目前关于Pre-Training的最好的理解是,它可以让模型分配到一个很好的初始搜索空间,按照[Erhan09, Sec 4.2]中说法:

    The advantage of pre-training could be that it puts us in a region of parameter space

    where basins of attraction run deeper than when picking starting parameters

    at random. The advantage would be due to a better optimization.

    来自Bengio的采访稿的一段,~Link~

    通常来讲,我所知道的模型都会受到不可计算性的影响(至少从理论上看,训练过程非常困难)。

    SVM之类的模型不会受到此类影响,但是如果你没有找到合适的特征空间,这些模型的普适性会受到影响。

    (寻找是非常困难的,深度学习正是解决了寻找特征空间的问题)。

    从Bengio的观点来看,Pre-Training带来的搜索空间,不仅有更好的计算(Optimation)性,还有更好的普适(Generalization)性。

    2.4 特殊的特征学习模型——卷积神经网络

    CNN经过20年发展,已经是家喻户晓了,即便你不懂它的原理,你一样可以用强大的Caffe框架做一些奇怪的事情。

    Bengio指出,CNN是一种特殊的神经网络,参数少,容易层叠出深度结构。

    最重要的是,它根据label,就能有效提取出稀疏特征,将其卷积核可视化之后,居然达到了近似生成模型的效果,确实可怕。

          

                                (CNN第一层卷积核可视化 by AlexNet)                                                     (DBN第二层可视化)

    上面是对自然图片的学习结果,Hinton指出,自然图片的参数可视化后,应该近似Gabor特征。

    CNN的强大,归结起来有四大创新点:

    ①块状神经元局部连接:CNN的神经元比较特殊,它是一个2D的特征图,这意味着每个像素点之间是没有连接的。

    全连接的只是特征图,特征图是很少的。由于这种特殊的连接方式,使得每个神经元连接着少量上一层经过激活函数的神经元。

    减轻了Gradient Vanish问题。使得早期CNN在非ReLU激活情况下,就能构建不退化的深度结构。

    其中,降采样层、为非全连接的"虚层",也就是说,真正构成压力的只有卷积层。

    Hinton的Dropout观点来看,块状神经元使得一个卷积核在一张feature map中固定学习一部分输入,而不依赖全部输入。

    这是为什么卷积核的可视化效果较好的原因。因为它模仿出了输入的局部特征。

    左图是FC网络非Dropout,右图是Dropout。[Hinton12]

    ②参数权值共享: 直观上理解是一个小型卷积核(如5x5)在30x30的图上扫描,30x30像素用的都是5x5参数。

    实际原因是1D连接变成了2D连接,原来的点对点参数现在变成了块对块参数,且卷积核块较小。更加容易提取出鲁棒性特征。

    当然,局部最小值问题也被减轻,因为参数量的减少,使得目标函数较为简单。

    ③卷积计算:对比原来的直接点对点乘,卷积方法能快速响应输入中的关键部分。

    ④降采样计算:添加了部分平移缩放不变性。

    Alex Krizhevsky在[Krizhevsky12]对传统CNN提出的几点改进,使得CNN结构变得更加强大:

    ①将Sigmoid系激活函数全部换成ReLu,这意味着多了稀疏性,以及超深度结构成为可能(如GoogleNet)

    ②添加局部响应归一化层,在计算神经学上被称作神经元的侧抑制,根据贾扬清说法,暂时似乎没发现有什么大作用。[知乎]

    Caffe中之所以保留着,是为了尊敬长辈遗留的宝贵成果。

    ③弱化FC层神经元数:ReLu使得特征更加稀疏,稀疏特征具有更好的线性可分性。[Glorot11]

    这意味着FC层的多余?GoogleNet移除了FC层,根据贾扬清大牛的说法:[知乎]

    因为全连接层(Fully Connected)几乎占据了CNN大概90%的参数,但是同时又可能带来过拟合(overfitting)的效果。

    这意味着,CNN配SVM完全成为鸡肋的存在,因为FC层+Softmax≈SVM

    ④为卷积层添加Padding,使得做了完全卷积,又保证维度不会变大。

    ⑤使用重叠降采样层,并且在重叠降采样层,用Avg Pooling替换Max Pooling(第一仍然是Max Pooling)获得了5%+的精度支持。

    ⑥使用了Hinton提出的DropOut方法训练,减轻了深度结构带来的过拟合问题。

    2.5 Pre-Training

    Pre-Training的理论基石是生成模型P(X)

    Hinton提出了对比重构的方法,使得参数W可以通过重构,实现

    生成模型的好处在于,可以自适应从输入中获取信息,尽管可能大部分都是我们不想要的。

    这项专长,可以用来弥补某些模型很难提取特征的不足,比如满城尽是FC的传统全连接神经网络。

    FC神经网络最大的缺陷在于很难提取到有用的特征,这点上最直观的反应就是 A Good Optimation But a Poor Generalization。

    最近刷微博看到有人贴1993年的老古董[论文],大概内容就是:

    证明神经网络只需1个隐藏层和n个隐藏节点,即能把任意光滑函数拟合到1/n的精度。

    然而并没有什么卵用,这是人工智能,不是数学函数模拟。你把训练函数拟合的再好,归纳能力如此之差,仍然会被小朋友鄙视的。

    为了证明FC网络和CNN的归纳能力之差,我用了Cifar10数据集做了测试,两个模型都没有加L1/L2。

    FC网络:来自[Glorot11]提出了ReLU改进FC网络,预训练:正向ReLU,反向Softplus,数据缩放至[0,1]

    网络[1000,1000,1000],lr三层都是0.01,pre-lr:0.005,0.005,0.0005。

    CNN:来自Caffe提供的Cifar10快速训练模型,[参考]

    [FC]

    负似然函数 1.69 1.55 1.49 1.44 1.32 1.25 1.16 1.07 1.05 1.00
    验证集错误率 55% 53% 52% 51% 49% 48%

    49%

    49% 49% 49%

     

     

     


    [CNN]

    负似然函数 1.87 1.45 1.25 1.15 1.05 0.98 0.94 0.89 0.7 0.63
    验证集错误率 55% 50% 44% 43% 38% 37%

    35%

    34% 32% 31%

     

     

     


    可以看到,尽管已经做了Pre-Training,在相同似然函数值情况下,FC网络的Generalization能力真是比CNN差太多。

    这也是为什么要使用多层网络,而不是1层网络的原因,为了得到更好的归纳。根据人视觉皮层的机理,多层次组合特征。

    可以获得更好的归纳效果,而不是就为了那点训练error,那点函数优化拟合。

    来自Bengio的采访稿的一段,~Link~

    全局逼近器并不会告诉你需要多少个隐含层。对于不确定的函数,增加深度并不会改进效果。

    然而,如果函数能够拆分成变量组合的形式,深度能够起到很大作用。

    无论从统计意义(参数少所需训练数据就少)来讲,还是从计算意义(参数少,计算量小)来讲。

    模式识别三大领域:Speech,CV,NLP都已经被证明了,其高级特征可以由低级特征组合得到

    所以,在这些领域当中,使用深度结构多层叠加低级特征,以获取高级特征,会得到更好的Generalization

    训练error代表着样本的损耗度,一旦error逼近0,那么说明这个数据集已经玩完了。

    如果此时仍然Generalization很差,真是神仙也救不了你。

     

    深度学习,真的是很深度嘛?

    3.1 DBN & Stack AutoEncoder

    先让我们来看看百度词条是怎么解释[深度学习]的:

    深度学习的概念由Hinton等人于2006年提出。基于深信度网(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望

    随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。

    DBN和SAE是原型结构都是基于FC网络的,使用的训练算法称为 "Greedy Layer-Wise Training”

    然而,如果你仔细翻翻DBN和SAE的论文,发现其隐层结构不过就3~4层,和我们理解中的“深度”不知差了多远。

    然而,最重要的是,通过Pre-Training之后,也就在FC网络基础上改进2~3%的错误率(Cifar10、MNIST),

    左图来自[Glorot11],使用比DBN更优良的Stacked Denoising Autoencoder,对于Cifar10和MNIST依然是惨不忍睹。

    右图来自[Erhan09, Sec 4.1], 即便Pre-Training,在加上第五隐层之后,网络也开始退化。

    看来,FC结构真是祸害不浅,除了很难提取特征外,还给训练带来灾难,和CNN对抗?想得美!

    所以说,Pre-Training给  解决深层结构相关的优化难题带来希望   而CNN才是  第一个真正多层结构。

    至于基于FC结构的默认DBN和SAE,只能说不要想太多。

    3.2 CNN倒是挺深度的

    改进CNN在超深度方面确实惊人。[Going deeper with convolutions By GoogleNet]

    尽管外界质疑超深度CNN是一种过拟合[知乎专栏],但我们起码离生物神经网络进了一步。

    3.3 混合CNN与SDAE

    DBN训练比SDAE慢(主要体现在GPU无法生成随机数,反复跑Gibbs Sampling很慢),而SDAE又比DBN效果好。

    忘掉俗套的FC结构吧。我们有更先进的CNN结构。

    展开全文
  • training.zip

    2020-08-25 10:16:37
    iChallenge-PM是百度大脑和中山大学中山眼科中心联合举办的iChallenge比赛中,提供的关于病理性近视... training.zip:包含训练中的图片和标签 validation.zip:包含验证集的图片 valid_gt.zip:包含验证集的标签
  • 协同训练算法之co-training

    万次阅读 2017-06-19 10:54:26
    在传统的监督学习中,学习器通过对大量有标记的(labeled)训练例进行学习,从而建立模型用于预测未见示例的标记。这里的“标记”(label)是指示例所对应的输出,在分类问题中标记就是示例的类别。随着数据收集和存储技术...
  • 一个完整的深度框架中应该包含两个主要部分,即训练(training)和推理(inference) 训练(Training) 打个比方,你现在想要训练一个能区分苹果还是橘子的模型,你需要搜索一些苹果和橘子的图片,这些图片放在...
  • 这一篇文章来简单地介绍一下链路训练状态机(Link Training and Status State Machine,LTSSM),并简要地介绍各个状态的作用和实现机制。 LTSSM有11个状态(其中又有多个子状态),分别是Detect、Polling、...
  • PCIE training

    2019-04-02 16:55:00
    LTSSM全称是Link Training and Status State Machine。这个状态机在哪里呢?它就在PCIe总线的物理层之中。 LTSSM状态机涵盖了11个状态,包括Detect, Polling, Configuration, Recovery, L0, L0s, L...
  • 浅析PCIe链路LTSSM状态机

    万次阅读 多人点赞 2018-01-07 16:04:25
    LTSSM全称是Link Training and Status State Machine。这个状态机在哪里呢?它就在PCIe总线的物理层之中。 LTSSM状态机涵盖了11个状态,包括Detect, Polling, Configuration, Recovery, L0,...
  • tf.contrib.training.train的使用

    千次阅读 2019-05-15 12:08:34
    文章目录1.作用2.使用train的简单的例子2.1载入数据和创建模型2.2定义loss2.3定义优化器2.4创建train_op2.5运行训练过程3.如何定义train_op3.1创建一个train_op,对梯度进行裁剪操作3.2创建train_op并通过提供来自...
  • Training_model(2)

    千次阅读 2018-07-26 22:59:23
    已经清洗处理了两个数据文件: application_{train|test}.csv :客户详细信息 bureau.csv : 客户历史信用报告 下面对这两个数据中的特征进行合并,然后Light Gradient Boosting Machine训练模型,之前只用客户数据...
  • 引言 Google在2018年发出来的论文,原文地址:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • Improved Techniques for Training GANs

    千次阅读 2017-03-02 20:14:32
    Improved Techniques for Training GANspaper codeIntroduce对抗网络主要有两个应用:半监督学习和生成视觉相似图片。对抗网络的目的要训练生成网络G(z;θG)G(z;\theta^{G}),输入噪声zz生成x=G(z;θG)x=G(z;\theta...
  • PBT(Population based training)是DeepMind在论文《Population Based Training of Neural Networks》中提出的一种异步的自动超参数调节优化方法。以往的自动调节超参方法可分为两类:parallel search和sequen...
  • 半监督学习之co-training到Tri-training

    万次阅读 2018-01-26 20:40:17
    半监督学习提出的原因:  传统的机器学习技术分为两类,一类是无监督学习,一类是监督学习。无监督学习只利用未标记的样本集,而监督学习则只利用标记的样本集进行学习。  但在很多实际问题中,只有少量的带有...
  • Rethinking ImageNet Pre-training 论文笔记

    千次阅读 2018-11-26 21:56:59
    论文:Rethinking ImageNet Pre-training 论文链接:https://arxiv.org/abs/1811.08883 Kaiming He这篇文章以计算机视觉中的目标检测、实例分割和人体关键点检测领域为例,思考预训练模型是否真的那么重要,最后基于...
  • PCIe 驱动流程(LTSSM

    万次阅读 2015-09-03 18:28:32
    本次的工作是完成刚流片的FPGA中PCIe IP核的bring up,也就是芯片的中PCIe的第一个使用者,将PCIe IP核正常使用起来,并配合公司的EDA团队,完成PCIe IP核到用户的呈现。  经过两个月的调试和文档阅读,对PCIe也有...
  • sequence training

    千次阅读 2016-01-06 23:09:51
    Sequence training is short for sequence discriminative training.Reference Voigtlaender, Paul, et al. “Sequence-discriminative training of recurrent neural networks.” Acoustics, Speech and Signal ...
  • DDR Training

    千次阅读 2019-10-17 22:47:16
    DDR Training Motivation:As the clock frequency runs higher, the width of the data eye becomes narrower to sample data (channel signal integrity and jitter contribute to data eyereduction). DDR trainin...
  • Training: Regex (Training, Regex) 题目描述 Your objective in this challenge is to learn the regex syntax. Regular Expressions are a powerful tool in your way to master programming, so you should be ...
  • 这是转自官方的... 收了,以后方便看 Introduction The work with a cascade classifier inlcudes two major stages: training and detection. Detection stag
  • 深度神经网络结构以及Pre-Training的理解   Logistic回归、传统多层神经网络 1.1 线性回归、线性神经网络、Logistic/Softmax回归 线性回归是用于数据拟合的常规手段,其任务是优化目标函数:h(θ)=θ+θ1...
  • Tesseract-OCR的Training简明教程

    万次阅读 2016-11-18 15:54:31
    引言: Tesseract虽然功能强大,但是依然由于图片本身诸多的干扰因素和识别能力,存在诸多的识别率不高和信息不准确的问题,Training的过程则可以提升起识别的准确率, 本文将介绍如何train tesseract-ocr,自定义...
  • LPDDR4 Data Eye Training

    千次阅读 2018-05-15 23:38:46
    3.1 Data Eye Training3.1.1 Read TrainingThe DQS signal on the memory interface is bidirectional. The PHY in many (not all) memoryarchitectures will generate a DQS gate signal that switches the read DQ...
  • READ DQS Gating Training

    千次阅读 2016-12-06 00:14:34
    1 Read DQS Gate Training… 测试序列中包含了DQS门控训练,在防止读错误是非常重要的。唯一可能使完成门控训练的读操作错误的原因是,每个读操作之间的DQS jitter非常大。为了缓解这种状态,门控训练的读操作会被...
  • 机器学习通俗易懂系列之trainingData

    千次阅读 2019-07-23 20:17:02
    有监督学习的样本,在尽量少人工标注的情况下,利用各种半监督、无监督算法进行样本标记;在有了labeled data之后,根据测试集表现,调整labeled data比例/清洗label,生成优质训练集
  • 基于Pre-trained模型,采用Post-training量化策略,能够在一定程度上弥补量化精度损失,并且避免了相对耗时的quantization-ware training或re-training过程。 WA与BC "Data-Free Quantization through Weight ...
  • 我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~ 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑...
  • 成功解决 ValueError: feature_names mismatch training data did not have the following fields 目录 解决问题 解决思路 解决方法 解决问题 ValueError: feature_names mismatch: ['crim', ...

空空如也

1 2 3 4 5 ... 20
收藏数 202,262
精华内容 80,904
关键字:

training