rainit2006 / Artificial-Intelligence

1 stars 0 forks source link

基础概念 #10

Open rainit2006 opened 6 years ago

rainit2006 commented 6 years ago

rainit2006 commented 6 years ago

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。 image 特征处理是特征工程的核心部分,sklearn提供了较为完整的特征处理方法,包括数据预处理,特征选择,降维等。

rainit2006 commented 6 years ago

量纲 量纲:物理量的基本属性。 物理量按照其属性分为两类: 1.物理量的大小与度量所选用的单位有关,称为有量纲量,例如,时间、长度、质量、速度、力、能量等。 2.物理量的大小与度量所选的单位无关,称为无量纲量,例如角度、增益、两个长度之比等。

量纲是物理量的基本属性,表明了物理量的“类型”,同“类型”的物理量之间进行和差运算或者进行比较才有意义。

无量纲 或称无因次量、无维量、无维度量、无维数量、无次元量等. 指的是沒有量綱的量。它是個單純的數字,量綱為1。 一些廣為人知的無量綱量包括圓周率(π)、歐拉常數(e)和黃金分割率(φ)等。 與之相對的是有量綱量,擁有諸如長度、面積、時間等單位。

无量纲化(nondimensionalize 或者dimensionless) 举个例子,描述长度可以用米或者厘米,这两个单位不同,但是物理量的量纲都是长度。 无量纲方程的好处是能够尽可能多地减少方程中常数的个数。

有量纲的方程在不同的单位制下会多出不同的常数。 如果我们通过数学操作,使得方程中所有的函数和变量都成为无量纲的,那么这些常数就会消失,取而代之的是真正描述规律的常数,这使得方程明晰易懂。 另外,无量纲化之后更容易把方程化成常见的形式,从而选取合适的解法。

无量纲化使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。区间缩放法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。

rainit2006 commented 6 years ago

似然函数 http://www.xuyankun.cn/2017/05/13/bayes/ image image

rainit2006 commented 6 years ago

马尔可夫链(Markov Chain) https://zhuanlan.zhihu.com/p/26453269

隐马尔可夫模型(HMM) https://zhuanlan.zhihu.com/p/24732345 相比于马尔可夫链,隐马尔可夫链有两种类型的状态, 一种是可以观察到的状态,另一种则是无法被观测的隐含状态。 隐含状态是一条马尔科夫链,而可观察状态由隐含状态决定。如果要描述这样的一个模型,显然需要两个转移概率矩阵:隐含状态之间的转移概率,隐含状态到可观察的转移概率。

rainit2006 commented 5 years ago

深度学习(Deep Learning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩、优化加速、异构计算等方法突破瓶颈。

模型压缩算法能够有效降低参数冗余,从而减少存储占用、通信带宽和计算复杂度,有助于深度学习的应用部署,具体可划分为如下几种方法(后续重点介绍剪枝与量化): -- 线性或非线性量化:1/2bits, int8 和 fp16等; -- 结构或非结构剪枝:deep compression, channel pruning 和 network slimming等; -- 其他:权重矩阵的低秩分解,知识蒸馏与网络结构简化(squeeze-net, mobile-net, shuffle-net)等;

模型优化加速能够提升网络的计算效率,具体包括: -- Op-level的快速算法:FFT Conv2d (7x7, 9x9), Winograd Conv2d (3x3, 5x5) 等; -- Layer-level的快速算法:Sparse-block net [1] 等; -- 优化工具与库:TensorRT (Nvidia), Tensor Comprehension (Facebook) 和 Distiller (Intel) 等;

rainit2006 commented 5 years ago

ResNet (Residual Network) https://deepage.net/deep_learning/2016/11/30/resnet.html ResNetは、Microsoft Research(現Facebook AI Research)のKaiming He氏が2015年に考案したニューラルネットワークのモデルである。 CNNにおいて層を深くすることは重要な役割を果たす。層を重ねるごとに、より高度で複雑な特徴を抽出していると考えられているからだ。 image Convolution層はフィルタを持ち、Pooling層と組み合わせて何らかの特徴を検出する役割を持っている。低・中・高レベルの特徴を多層形式で自然に統合し、認識レベルを強化することができる。

層を更に深くする試みはあったものの、思い通りに学習が進まなかった。 単純に層を深くすると、性能が悪化することが報告されていた。

ResNetのアイデアはシンプルで、「ある層で求める最適な出力を学習するのではなく、層の入力を参照した残差関数を学習する」 ことで最適化しやすくしている。

rainit2006 commented 5 years ago

卷积神经网络CNN完全指南终极版 https://zhuanlan.zhihu.com/p/27908027 https://zhuanlan.zhihu.com/p/28173972

rainit2006 commented 5 years ago

PCA的数学原理(转) https://zhuanlan.zhihu.com/p/21580949

rainit2006 commented 4 years ago

开源框架

参考

https://zhuanlan.zhihu.com/p/61095501

常见开源框架

image

image

现在已经有很多开源框架之间进行互转的开源工具如MMDNN等,降低了大家迁移框架的学习成本。

建议: (1) 不管怎么说,tensorflow/pytorch你都必须会,这是目前开发者最喜欢,开源项目最丰富的两个框架。 (2) 如果你要进行移动端算法的开发,那么Caffe是不能不会的。 (3) 如果你非常熟悉Matlab,matconvnet你不应该错过。 (4) 如果你追求高效轻量,那么darknet和mxnet你不能不熟悉。 (5) 如果你很懒,想写最少的代码完成任务,那么用keras吧。 (6) 如果你是java程序员,那么掌握deeplearning4j没错的。 其他的框架,也自有它的特点,大家可以自己多去用用。

Cafe

Caffe是伯克利的贾扬清主导开发,以C++/CUDA代码为主,最早的深度学习框架之一,比TensorFlow、Mxnet、Pytorch等都更早,需要进行编译安装。支持命令行、Python和Matlab接口,单机多卡、多机多卡等都可以很方便的使用。目前master分支已经停止更新,intel分支等还在维护,caffe框架已经非常稳定。 image 以上的流程相互之间是解耦合的,所以caffe的使用非常优雅简单。

Tensorflow

TensorFlow是Google brain推出的开源机器学习库,可用作各类深度学习相关的任务。 TensorFlow最大的特点是计算图,即先定义好图,然后进行运算,所以所有的TensorFlow代码,都包含两部分:

  1. 创建计算图,表示计算的数据流。 它做了什么呢?实际上就是定义好了一些操作,你可以将它看做是Caffe中的prototxt的定义过程。
  2. 运行会话,执行图中的运算,可以看作是Caffe中的训练过程。 只是TensorFlow的会话比Caffe灵活很多,由于是Python 接口,取中间结果分析,Debug等方便很多。

Pytorch

一句话总结Pytorch = Python + Torch。 Torch是纽约大学的一个机器学习开源框架,几年前在学术界非常流行,包括Lecun等大佬都在使用。但是由于使用的是一种绝大部分人绝对没有听过的Lua语言,导致很多人都被吓退。后来随着Python的生态越来越完善,Facebook人工智能研究院推出了Pytorch并开源。Pytorch不是简单的封装Torch 并提供Python接口,而是对Tensor以上的所有代码进行了重构,同TensorFlow一样,增加了自动求导。

Keras

Keras是一个对小白用户非常友好而简单的深度学习框架,严格来说并不是一个开源框架,而是一个高度模块化的神经网络库。