路虽远行则将至。
浙江大学 · 机器学习
惊叹深度网络的每次改进都如此精妙,也不知道为啥,反正收敛靠运气,试验效果更好,太神奇了。 每次看到 ReLU,都想起这玩意,简单的函数可以折叠出任意复杂的高维。 感觉自编码器最大的作用是保证信息不丢失,初始值在最优值附近。 网络的历史发展,每一个网络在 前面的网络 基础上 改进了啥,解决了什么问题。 每次 改动能感受到里面的 精妙,一次次打入黑暗的光亮,推动着深度学习的发展。
深度学习与炼丹。 经典网络 AlexNet 第一层的卷积内核是 11x11 像素。 为什么是 11 不是 10,不是 12?不知道,作者写论文的时候也没讲。 AlexNet 为什么有 9 层,为什么第二层就变成 5x5,后面又变成 3x3 了? 作者也没说。甚至,为什么这个内核的大小越来越小也没有交代。 深度学习像一剂成分复杂、原理不明的药。
严伯钧 神经网络处理架构 Transformer,适合处理自然语言 NLP。 卷积架构 适合图像处理,RNN 架构适合语言处理。
实践中,根据经验多试几个网络,哪个效果更好就用那个。
https://github.com/microsoft/ai-edu https://microsoft.github.io/ai-edu/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/index.html
非监督学习算法:
监督学习:
完成。
完成。
KKT 条件。
跳过。
交叉验证。 五折交叉验证 挑选出最好的 超参数。C & Gamma。 最后再用所有数据训练一次。
混淆矩阵。 ROC 曲线。
政治选举的经济学分析当中,非常重要的中位数投票原理,就是说,你要获得最大多数的支持,你就要去迎合那些中位数者的偏好。
阿罗不可能定律 在人们有多种不同选择的情况下,选举不一定能够反映出大多数人的意愿。选举会出现议而不决、循环不已的情况,而要阻止这种情况,要么是由议程决定人决定会议的程序,要么把选票改成钞票。
单个神经元是一阶泰勒近似。
note 
三层神经网络可以模拟任意的非线性函数。
note 
完成。
note 
note
三层神经网络可以模拟任意决策面的
证明是基于阶跃函数的。
在分类问题中,我们经常采用另一种目标函数,即基于 SoftMax 分类函数和交叉熵(Cross Entropy) 的目标函数。
基于交叉熵(Cross Entropy) 的目标函数,其中: \(\mathrm{E}(\mathrm{y})=-\sum_{\mathrm{i}=1}^{\mathrm{K}} \mathrm{Y}_{\mathrm{i}} \log \left(\mathrm{y}_{\mathrm{i}}\right)\)
在信息论中,这个式子叫作交叉熵,它反映的是两个概率分布 $Y$ 与 $y$ 之间的相似程度。
根据信息论,可以证明如下两个事实:
基于上面的事实,我们可以利用梯度下降法求 $E ( y )$ 的局部极值,这样就可以使 $y$ 尽可能地接近 $Y$。
在分类问题中利用 SoftMax 函数和交叉熵(Cross Entropy) 来改进目标函数,实践证明这样的目标函数比前面预测值 $y$ 和真实值 $Y$ 差的模的平方那样的目标函数更有利于训练,在实际中,获得的识别率更高。
完成。
首先是三个训练神经网络的建议,这几个建议应该是学术界一致公认的。
分出一些验证集(Validation Set) ,训练的本质目标是在验证集上获取最大的识别率。 因此训练一段时间后,必须在验证集上测试识别率,同时需要保存使验证集上识别率最大的模型参数,作为最后的结果。
引入动量解决梯度方向随机化
生成对抗网络(Generative Adversarial Networks)、循环神经网络(Recurrent Neural Networks)、图卷积神经网络(Graph Convolutional Neural Networks)。
note
和支持向量机相比,多层神经网络的劣势:
note
卷积神经网络(Convolutional Neural Network, CNN)。
你可以在某种程度上把人类看做为一个生物引导程序,引出一种超级数字智能物种。人类社会是一段非常小的代码,没有他计算机就无法启动,人类的产生就是为了让计算机启动,硅基生命(AI)似乎不能自我演化,它需要生物(人类)作为前导才能进化,人类只是硅基生命的开启程序。 最后一个人类闭上眼睛,就是硅基文明元年。整个宇宙最终会形成一个超级电脑,电脑的最后一个命令是用全部算力制造一个新的碳基宇宙,就是人类。这样周而复始。
note
AlexNet 的结构以及 AlexNet 对于卷积神经网络的一系列改进,它们分别是:
每一個改變都太重要了,基本現在都還是最常用的。
note
TensorFlow、Caffe 和 Pytorch 三种深度学习编程工具。
torch.nn 模块之常用激活函数详解 note 
| 名称 | 层对应的类 | 功能 |
|---|---|---|
| S 型激活函数 | torch.nn.Sigmoid | Sigmoid 激活函数 |
| 双曲正切函数 | torch.nn.Tanh | Tanh 激活函数 |
| 线性修正单元函数 | torch.nn.ReLu | ReLu 激活函数 |
| ReLu 函数变体 | torch.nn.LeakyReLu | LeakyReLu 激活函数 |
| 平滑近似 ReLu 函数 | torch.nn.Softplus | ReLu 激活函数的平滑近似 |
在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(Feature Map)上的像素点在输入图片上映射的区域大小。
note 
用更小的卷积核叠加代替大的卷积核可以起到降低待估计参数的作用。但是多层卷积需要更大的计算量,中间过程过程特征图也需要更多的储存空间,因此 VGGNet 是一个计算和存储开销都较大的网络。
GooleNet 提出了 Inception 结构,Inception 结构是用一些 1×1,3×3 和 5×5 的小卷积核用固定方式组合到一起来代替大的卷积核,达到增加感受野和减少参数个数的目的。
2014 年研究人员分析了深度神经网络,并从理论和实践上证明 更深的卷积神经网络能够达到更高的识别准确率 (L.J. Ba and R.Caruana,Do deep nets really need to be deep? NIPS 2014.)。因此,如何构建让更深的卷积神经网络收敛成了研究领域共同关注的问题。
在 2015 年,Kaiming He 等人发明了 ResNet,使得训练深层的神经网络成为了可能(K. He,X. Zhang S. Ren and J.sun, Deep residual learning forimage recognition,cVPR2016.)。
将浅层的输出直接加到深层当中去,当然在实际的添加中,由于浅层和深层的特征图在维度上有可能不一致导致无法直接相加,我们可以用一个线性变换直接把浅层特征图的维度变为深层特征图的维度。
寻找更好的神经网络结构的努力一直在持续,严格的说这是一个需要在 识别精度、计算量、存储量 三个方面平衡取舍的问题。近年来,流行的趋势是利用紧凑的、小而深的网络代替以往稀疏的、大而浅的网络,同时在具体的实践过程中加入一些创意和技巧。近年来流行的例如 ShuffleNet、MobileNet 等都是其中的典型代表,另一方面, 网络结搜索(Network Architecture Search) ,即如何从一大堆网络结构中搜索适合具体的网络结构成为领域内另一个热点问题。
不同网络计算量和识别率的联合比较。横坐标是网络的计算量,纵坐标是网络的 Top1 识别率。
在训练的时候保留最后一层 SoftMax,而在测试的时候却不要最后一层,将倒数第二层 160 个维度作为最后人脸识别的特征。在测试时,每张人脸通过卷积神经网络,获得 160 维向量,利用距离量度,如 欧氏距离和余弦距离 等,算出基于这 160 维向量的人脸距离,最终通过阈值获得识别结果。
Large-Margin SoftMax Loss 可以有效地提高人脸识别的准确率。
基于 Large-Margin SoftMax Loss 的思想,近年来进一步提出了 CosFace 和 ArcFace,这两种改进方法的思路与 Large-Margin SoftMax Loss 大同小异,都是基于限制同一类特征分布在狭窄的角度范围内。
Triplet Loss “三元组损失函数”。
note
需要强调在实现人脸识别的时候,我们首先应该做的是人脸检测和人脸对齐,目前常用的人脸检测程序是 MTCNN ,它也是基于深度学习的检测系统,可以检测人脸的眼睛、鼻子和嘴巴五个特征点。可以以此获取人脸的位置,同时基于检测到的两个眼睛与水平线的夹角对人脸实现转正的操作,提高人脸识别准确率。
note
RCNN R-CNN(Regions with CNN feature)的概念,用来处理上述情形。其核心思路是用大大小小的方框遍历所有的图像是不现实的,我们需要一个计算量不那么大的算法,提出 ROI(Region of Proposal,or Proposal)。
R-CNN 的主要思想是用 Selective Search 去产生候选的方框(Proposal),将这些候选方框输入到 CNN 中,最后用 SVM 来判断这些候选方框中有没有目标。
Fast R-CNN 首先用 CNN 的卷积层对整幅图像进行卷积操作,在中间某一层的特征图上再用 ROI-Pooling 来归一化每个候选框区域的输出。
Faster R-CNN Faster R-CNN 在卷积后特征图上滑动窗口,用不同长宽比的矩形作为候选区域,用一个小网络来判断这些候选区域是不是存在目标,对于确定是目标的候选区域运用前面的 ROI-Pooling 来进行归一化,最终获得输出的结果。
目标检测 YOLO(YOU ONLY LOOK ONCE)
MTCNN,利用深度学习将人脸检测和人脸特征点定位结合起来。
三个子网络:
全卷积网络 FCN
Mask R-CNN http://counting.movingshop.cn
2.1k 输入一张包含数学计算题的图片,输出识别出的数学计算式以及计算结果。mathAI
各种深度网络,有点逛菜市的感觉。
RNN 循环神经网络
LSTM 长短期记忆网络(Long-Short Term Memory, LSTM)论文首次发表于 1997 年。由于独特的设计结构,LSTM 适合于处理和预测时间序列中间隔和延迟非常长的重要事件。 LSTM 的表现通常比时间递归神经网络及隐马尔可夫模型(HMM)更好,比如用在不分段连续手写识别上。 2009 年,用 LSTM 构建的人工神经网络模型赢得过 ICDAR 手写识别比赛冠军。 LSTM 还普遍用于自主语音识别,2013 年运用 TIMIT 自然演讲数据库达成 17.7% 错误率的纪录。 作为非线性模型 ,LSTM 可作为复杂的非线性单元用于构造更大型深度神经网络。
GAN
GAN 的缺点:
强化学习就开始有点看不懂了,更难了。mark
强化学习与监督学习的区别
epsilon-greedy 算法
对于状态数和行为数很多时,这两个算法将会遇到困难。
DEEP Q-NETWORK (DQN)
奖励函数,行为获得很久后才能获得,比如下棋。 下棋下到最后,才有输和赢而前面的每一步,虽然有些奖励函数的线索,但与真实输赢的相关性直到最后才能被完全体现。
引入估值函数。
actor-critic
中国规则
必胜策略(上帝策略) 要么使先走的人则然获胜,要么使后走的人必然获胜。
AlphaGo 围棋 论文笔记
三个深度策略网络 (Policy Networks),一个深度估值网络 (Value Network)
棋力一般,棋力更强,棋力更快。
模仿走子网络,因为它的目的是模仿网络高手。
自学走子网络,自己跟自己下棋,通过这种方式进一步学习。 策略网络(PolicyNetwork),给定当前局面,预测并采样下一步的走棋。
为了避免对局的网络过于相似而出现的过拟合,应用了如下策略:
快速走子(Fastrollout),目标和策略网络一样,但在适当牺牲走棋质量的条件下,速度要比策略网络快 1000 倍。
棋盘价值网络。 价值网络(ValueNetwork),给定当前局面,估计是白胜概率大还是黑胜概率大。
下棋方法一蒙特卡洛树搜索 (Monte Carlo Tree Search) 把以上这三个部分连起来,形成一个完整的系统。 多次模拟未来棋局,然后选择在模拟中选择次数最多的走法。
将策略网络和估值网络合并为一个网络。
自适应提升 (Adaptive Boosting) 简称 ADABOOST
使用 AdaBoost 进行目标检测 
核心思想 融合一些弱分类器获得强分类器。
ADABOOST 的核心流程 先用一部分特征训练一些较弱的分类器然后再将这些较弱的分类器逐步提升为强的分类器。 ADABOOST 的核心是调整训练样本的分布,使得先前分类器做错的训练样本在后续学习中获得更多的关注,然后基于调整后的样本分布来训练下一个分类器。 最后再用权重系数将获得的各个弱分类器组合起来形成强分类器。
最终得到能表征人脸的 Haar 特征:
AdaBoost 人脸检测流程
又看了一晚上的 AlphaGo,这玩意只会下围棋,不会别的,更谈不上独立的意识。目前的 AI 算法只是看上去智能罢了,人类拟合出来的超高维度函数,距离真正的人工智能遥不可及。
主成分分析是一种统计方法通过 正交变换 将一组可能存在相关性的变量转换为一组线性不相关的变量,达到数据压缩的目的。
在二维条件下,PCA 的目的是找到一个方向,使得数据在这个方向上投影后的 方差最大 。
占据 99% 能量的 M 值 占据 95% 能量的 M 值
期望最大化算法 Expectation-maximization algorithm,EM 算法 K 均值算法 目标函数 E 的局部极值
和分水岭算法有点像。 高斯混合模型(GMM) 可以看做是 k-means 模型的一个优化。
以下是使用高斯混合模型的三个不同步骤:
应用:视频前景背景检测,三个高斯。
说话人识别。
我们认为:特征差距小的样本更有可能是同一类。
ROC(Receiver Operating Character)曲线,是一条横坐标 FP,纵坐标 TP 的曲线。
Marvin Lee Minsky,1969 年图灵奖获得者,创建麻省理工学院人工智能实验室。 线性可分 & 线性不可分。
阶跃函数加入后,可以解决所有的非线性问题。
三层神经网络可以模拟任意决策面。
训练建议
注意调整学习率(Learning Rate)如果刚训练几步, cost 就增加,一般来说是学习率太高了;如果每次 cost 变化很小,说明学习率太低。
人工神经网络的历史–多层网络 多层神经网络的优势:
多层神经网络的劣势:
数据库介绍 自编码器(Auto encoder) 卷积神经网络(Convolutional Neural Networks CNN) 深度学习工具(Tensorflow 和 Caffe) 流行的卷积神经网络结构(LeNet,AlexNet,VGGNet,GoogLeNet,ResNet) 我们实验室的工作
深度学习三剑客的坚持 LeCun:“这种算法很有价值,不知为什么要放弃它。75 ““智能产生于人脑,所以从长远来说,人工智能应 Hinton: 该像大脑系统一样工作。 一起起组成了“Deeplearning这三人从2003年开始,conspiracy”,悄悄开发了 10 层以上的人工神经网络。
2006 年是深度学习的起始年 ,Hinton 在 SCIENCE 上发文,提出一种叫做自动编码机 (Auto-encoder) 的方法, 部分解决了神经网络参数初始化的问题。
等价于:
提出了最大池化(MaxPooling)的概念,即对每一个邻近像素组任 AlexNet 中,成的“池子”,选取像素最大值作为输出。 在 LeNet 中,池化的像素是不重叠的;而在 AlexNet 中进行的是有重叠的池化。 实践表明,有重叠的最大池化能够很好的克服过拟合问题,提升系统性能。
随机丢弃(Dropout)。为了避免系统参数更新过快导致过拟合,每次利用训练样本更新参数时候, 随机的“丢弃一定比例的神经元,被丢弃的神经元将不参加训练过程,输入和输出该神经元的权重系数也不做更新。 这样每次训练时训练的网络架构都不一样,而这些不同的网络架构却分享共司的权重系数。 实验表明,随机丢弃技术减缓了网络收敛速度,也以大概率避免了过拟合的发生。
增加训练样本。尽管 ImageNet 的训练样本数量有超过 120 万幅图片,但相对于 6 亿待估计参数来说,训练图像仍然不够。 Alex 等人采用了多种方法增加训练样本,包括:1. 将原图水平翻转;2. 将 26x256 的图像随机选取 224x224 的片段作为输入图像。 运用上面两种方法的组合可以将一幅图像变为 2048 幅图像。还可以对每幅图片引入一定的噪声,构成新的图像。 这样做可以较大规模增加训练样本,避免由于训练样本不够造成的性能损失。
ResNet,残差网络。为什么要这么做呢?这样好是实验做出来的结果,你如果做一个也比较好,也是可以的,目前来说没有太多的理论依据。
他直接用 Alex Net,他直接用 Alex Net,然后呢,他把 Alex Net,然后呢,他把 Alex 在这里已经训练好了嘛,1000 个类嘛, 他在用我的那个训练的样本,就说大概有 20 多类水果,每一类水果可能有 50 张样本,用这 1000 张。 1000 张左右左右的这个训练机,对它进行微微的调用,就对这个已经训练好的二类的去进行微微的调用, 因为这个二类的这 1000 类当中可能有水果,但它没有那么细致的划分到底是哪一种水果,但是啊, 你用特别小的一个数据集,你就针对这个大网络进行一个微调,最后得到的效果。 比第二名用传统的方式好特别多好特别多,所以说所以说迁移学习有的时候他跨度是很大的, 经常我们我们所做的事情也是也是这样子的一个状况,当然还有另外的一种做法,还有另外的一种做法,迁移学习的另外一种。
人脸验证的关键是将人脸图像映射到一个特征空间,在这个空间中同一个人的距离更近,不同人的距离更远。 这里我们采用分类监督来学习这样一个特征空间。 用 Caffe 实现人脸验证,先训练一个人脸分类网络,接着把网络倒数第二个全连接层作为特征层(512 维)。
第一项是 softmax loss,第二项是 center loss。
卷积神经网络压缩:有了一个神经网络,尽可能降低它的复杂度,或者降低它的存储容量,同时又不能让它的识别率下降太多。
Transfer Learning 迁移学习 把一个 Domain 的经验迁移到另一个 Domain 上去。
比如之前一个用外国人脸训练的人脸识别模型,要想让它识别亚洲人的脸,可以用 10 万张亚洲人的脸对模型进行微调,再用 4 万张身份证人脸再进行调优。
求最佳策略的迭代算法 求最佳策略的迭代算法 定住 V 算 π,然后定住 π 算 V,不断循环,最后结果会收敛。
Q-learning 的劣势:
AlphaGo 介绍 Mastering the game of Go with deepneural networks and tree search 2016.10.20 开源代码:RocAlphaGo
深度策略网络 $p_\sigma$: (Supervised Learning Policy Network)
有一个全 0 平面,一个全 1 平面,很奇怪。
note 主成分分析法是一种降维的统计方法,在机器学习中可以作为数据提取的手段。
主成分分析:构造一个 A,b,使 Y=AX+b。其中 A 维度 M*N,X 维度 N*1,b 维度 M*1,则 Y 维度 M*1。
主成分分析可以看成是一个一层的,有 M 个神经元的神经网络(即 Y=WTX+b,主成分分析和该公式本质一样)。
PCA 和自编码器差不多。
主成分分析:寻找使方差最大的方向,并在该方向投影。
SVD 是 PCA 的一个快速算法求解实现。 PCA 的算法两种实现方法
定理:随着 M 的增加,AdaBoost 最终分类器 $G(X)$ 在训练集上错误将会越来越小。
汽车的发明虽让马车夫这一职业退场,却催生了司机、维修工、加油站职员、车评人等一系列职业。 大家能够看到现在的工作会消失,但是我们看不到什么新的工作机会会被创造出来。 就像 100 年前、200 年前那些人,看不到后来产生的新的工作机会一样。 虽然有些工作机会没了,但是更多的机会出现了。人们工作效率的提升,可以养活更多的人,而每个人的生活又变得比以前更好了。
目标检测- 以人脸检测为例
构造目标函数,极大似然法,Maximum Likelihood
求解高斯混合模型的几种方法:
EM 算法 (Expectation-Maximization algorithm) 高斯混合模型是非凸问题,无法求全局极值,只能求局部极值。
EM 算法是求局部极值的算法,不能求全局极值。只能对某一类局部极值问题可解。 而梯度下降、启发式方法等可以求解任何求局部极值问题。
EM 算法优点
高斯混合模型,是先有鸡还是先有蛋的问题,先假设样本的 label,还是先假设分布 $(u、Σ、π)$。
高斯混合模型 EM 算法流程
Speaker Recognition,说话人识别,又称为 声纹识别 ,就是通过语音语调判断说话人识别,跟人脸识别一样。
提取的特征:MEL 倒谱系数 (Mel-frequency Cepstrum Coefficients, MFCC)
把声音反推回声道模型,计算出管子不同部位的高和宽。以物理方式做的特征,基本上能保证很高的识别率:
EM 算法缺点 EM 算法是求局部极值的算法,和其他求局部极值的方法一样,它的缺点也是结果和初始值选取有关。
可以看出左侧比右侧的平方和要小,但是没法从右侧收敛到左侧。
连续行为的识别。
一个 HMM 是由三部分组成: $λ=(A,B,Π)$
Viterbi-Algorithm(维特比算法) 维特比算法是一个特殊但应用最广的动态规划算法。 利用动态规划,可以解决任何一个图中的最短路径问题。 而维特比算法是针对一个特殊的图-篱笆网了(Lattice)的有向图最短路径问题而提出来的。 它之所以重要,是因为凡是使用隐马尔可夫模型描述的问题都可以用它解码, 包括当前的数字通信、语音识别、机器翻译、拼音转汉字、分词等。
汉语中 Triphone 个数:音节内 270 多个,音节间 3800 多个这是包含声调后的结果。 这就意味着,汉语构造声学模型比英语更容易。
DNN-HMM 与 GMM-HMM 对比: 假设输入语音为 ${x_1,x_2,…,x_T}$,且 HMM 有 N 个状态
参考书和论文
工具包
若 w 为三层神经网络,且状态数有限,则 RNN 可以模拟 GMM-HMM。
意识分级
高数,线性代数,概率论,Python 入门
美国 关于 色情 ,一直没有标准,直到 社区标准的出现。