Andrew Ng机器学习课程相关资料

Andrew Ng 的机器学习课程的视频,由于需要翻墙,因此在这里简单提供一下本站的下载链接。

Mathematics Behind Large Margin Classification

第七周


Support Vector Machines Kernels I

Support Vector Machines Kernels II

UsingAnSVM

讲座幻灯片 Lecture12 Support Vector Machines
编程作业: Support Vector Machines

第八周


讲座幻灯片 Lecture14 K-Means Clustering And PCA
编程作业: K-Means Clustering and PCA

第九周


Density Estimation

Problem Motivation

Gaussian Distribution

Algorithm

Building an Anomaly Detection System

第十周


Learning With Large Datasets

Stochastic Gradient Descent

第十一周


Problem Description and Pipeline

CNN 模型压缩与加速算法综述

CNN 模型压缩与加速算法综述

姜媚 2017-08-21 5760标签: CNN , 神经网络

导语:卷积神经网络日益增长的深度和尺寸为深度学习在移动端的部署带来了巨大的挑战,CNN模型压缩与加速成为了学术界和工业界都重点关注的研究领域之一。

前言

自从AlexNet一举夺得ILSVRC 2012 ImageNet图像分类竞赛的冠军后,卷积神经网络(CNN)的热潮便席卷了整个计算机视觉领域。CNN模型火速替代了传统人工设计(hand-crafted)特征和分类器,不仅提供了一种端到端的处理方法,还大幅度地刷新了各个图像竞赛任务的精度,更甚者超越了人眼的精度(LFW人脸识别任务)。CNN模型在不断逼近计算机视觉任务的精度极限的同时,其深度和尺寸也在成倍增长。

表1 几种经典模型的尺寸,计算量和参数数量对比

Model Model Size(MB) Million
Mult-Adds
Million
Parameters
AlexNet[1] >200 720 60
VGG16[2] >500 15300 138
GoogleNet[3] ~50 1550 6.8
Inception-v3[4] 90-100 5000 23.2

随之而来的是一个很尴尬的场景:如此巨大的模型只能在有限的平台下使用,根本无法移植到移动端和嵌入式芯片当中。就算想通过网络传输,但较高的带宽占用也让很多用户望而生畏。另一方面,大尺寸的模型也对设备功耗和运行速度带来了巨大的挑战。因此这样的模型距离实用还有一段距离。

在这样的情形下,模型小型化与加速成了亟待解决的问题。其实早期就有学者提出了一系列CNN模型压缩方法,包括权值剪值(prunning)和矩阵SVD分解等,但压缩率和效率还远不能令人满意。

近年来,关于模型小型化的算法从压缩角度上可以大致分为两类:从模型权重数值角度压缩和从网络架构角度压缩。另一方面,从兼顾计算速度方面,又可以划分为:仅压缩尺寸和压缩尺寸的同时提升速度。

本文主要讨论如下几篇代表性的文章和方法,包括SqueezeNet[5]、Deep Compression[6]、XNorNet[7]、Distilling[8]、MobileNet[9]和ShuffleNet[10],也可按照上述方法进行大致分类:

表2 几种经典压缩方法及对比

Method Compression Approach Speed Consideration
SqueezeNet architecture No
Deep Compression weights No
XNorNet weights Yes
Distilling architecture No
MobileNet architecture Yes
ShuffleNet architecture Yes

继续阅读CNN 模型压缩与加速算法综述

神经网络瘦身:SqueezeNet

2016年2月份,UC Berkeley和Stanford一帮人在arXiv贴了一篇文章:

这篇文章做成了许多人梦寐以求的事——压缩神经网络参数。但和以往不同,原作不是在前人网络基础上修修补补(例如Deep Compression),而是自己设计了一个全新的网络,它用了比AlexNet少50倍的参数,达到了AlexNet相同的精度!

关于SqueezeNet的创新点、网络结构,国内已经有若干爱好者发布了相关的简介,如这篇这篇,国外的文献没有查,相信肯定也有很多。

本文关注的重点在SqueezeNet为什么能实现网络瘦身?难道网络参数的冗余性就那么强吗?或者说很多参数都是浪费的、无意义的?

继续阅读神经网络瘦身:SqueezeNet

Ubuntu 16.04系统Microsoft Common Objects in Context(COCO)数据集在Python环境中的使用

Microsoft Common Objects in Context(简写COCO)数据集是微软团队提供的一个可以用来进行图像识别,分割,注解等开发工作的数据集。

其官方说明网址:http://mscoco.org/

继续阅读Ubuntu 16.04系统Microsoft Common Objects in Context(COCO)数据集在Python环境中的使用

Caffe训练过程中的train,val,test的区别

valvalidation的简称。
training datasetvalidation dataset都是在训练的时候起作用。
而因为validation的数据集和training没有交集,所以这部分数据对最终训练出的模型没有贡献。
validation的主要作用是来验证是否过拟合、以及用来调节训练参数等。

比如训练0-10000次迭代过程中,trainvalidationloss都是不断降低,
但是从10000-20000过程中train loss不断降低,validationloss不降反升。
那么就证明继续训练下去,模型只是对training dataset这部分拟合的特别好,但是泛化能力很差。
所以与其选取20000次的结果,不如选择10000次的结果。
这个过程的名字叫做Early Stopvalidation数据在此过程中必不可少。

如果跑caffe自带的训练demo,你会用到train_val.prototxt,这里面的val其实就是validation
而网络输入的TEST层,其实就是validation,而不是test。你可以通过观察validationlosstrainloss定下你需要的模型。

但是为什么现在很多人都不用validation了呢?
我的理解是现在模型中防止过拟合的机制已经比较完善了,Dropout\BN等做的很好了。
而且很多时候大家都用原来的模型进行fine tune,也比从头开始更难过拟合。
所以大家一般都定一个训练迭代次数,直接取最后的模型来测试。

引用链接


图像识别训练样本集

ImageNet

ImageNet是一个计算机视觉系统识别项目,是目前世界上图像识别最大的数据库。是美国斯坦福的计算机科学家李飞飞模拟人类的识别系统建立的。能够从图片识别物体。目前已经包含14197122张图像,是已知的最大的图像数据库。每年的ImageNet大赛更是魂萦梦牵着国内外各个名校和大型IT公司以及网络巨头的心。图像如下图所示,需要注册ImageNet帐号才可以下载,下载链接为http://www.image-net.org/

继续阅读图像识别训练样本集

语音识别商用开源代码与免费开放平台最全盘点分析

声学在线前几日盘点了语音识别业界相关的公司和技术,引起了众多朋友的关注。不少朋友都在咨询声学在线关于技术细节问题,因此,我们打算春节期间连续发布几篇深度文章,希望从语音识别领域的公司、技术、算法和专利的层面解读出语音识别的产生、发展、应用与瓶颈,以此提供给相关行业的朋友们作为参考。

目前朋友们最关心的就是当前有哪些语音识别开放平台,显然大家更担心被某个平台所绑架。为了促进语音识别的行业发展,我们更深入一步,不仅盘点当前的商业开放平台,也把这个领域的开源代码详细盘点一番,让更多的朋友了解这个行业。

语音识别领域的商用开源代码盘点

语音识别是一门交叉学科,其所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。但是随着深度学习技术的发展,云端的语音识别更多的偏向于计算机技术。显然,从事计算机技术研究的人员更加众多,这也是语音识别的快速发展的基础,因而也形成了语音识别的开源代码要比开放平台更多的现象。

提到语音识别的开源代码,首先就要提到三个非常著名的开源平台,即Kaldi、CMU Sphinx和Julius。笔者大概按其重要性做了以下排名,Sphinx、HTK之类曾经很红火,但是确实也有点太老了。而Kaldi是Apache licence,完全可以商用,美国和中国很多公司都是直接修改Kaldi生成的语音识别引擎。另外,很多巨头公司内部研究部门也是在用Kaldi做研发,关于这些欢迎留言讨论。

继续阅读语音识别商用开源代码与免费开放平台最全盘点分析

ROCm:AMD系开源HPC/超规模GPU计算/深度学习平台

ROCm的英文全称Radeon Open Compute platform,它是AMD在去年12月推出的一款开源GPU运算平台,目前已经发展到了1.3版本。MIOpen则是AMD为此开发的软件库,其作用是将程序设计语言和ROCm平台连接,以充分利用GCN架构。

本次发布的版本包括以下内容:

  • 深度卷积解算器针对前向和后向传播进行了优化
  • 包括Winograd和FFT转换在内的优化卷积
  • 优化GEMM深入学习
  • Pooling、Softmax、Activations、梯度算法的批量标准化和LR规范化
  • MIOpen将数据描述为4-D张量 - Tensors 4D NCHW格式
  • 支持OpenCL和HIP的框架API
  • MIOpen驱动程序可以测试MIOpen中任何特定图层的向前/向后网络
  • 二进制包增加了对Ubuntu 16.04和Fedora 24的支持
  • 源代码位于https://github.com/ROCmSoftwarePlatform/MIOpen
  • 参考文档

继续阅读ROCm:AMD系开源HPC/超规模GPU计算/深度学习平台

卷积神经网络CNN总结

卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。

继续阅读卷积神经网络CNN总结