![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
doubleslow;
Success is a series of little wins.
展开
-
偏差-方差分解(bias-variance decomposition):在理论上解释算法的泛化性能
文章目录我们可以直接做实验,拿到一个具体的精度,以及训练过程的变化曲线,观察出模型的泛化性能。但是这样做,明显是很模糊主观的,而且也完全不知为何会表现出这样的泛化性能。本文所说的这个分解方法就是要在理论上去分析一下,到底泛化误差由什么组成,由哪些因素影响。我个人觉得这个理论分析法的贡献是非常非常大。...原创 2020-10-22 15:13:37 · 1569 阅读 · 0 评论 -
总结:两个向量之间,常用的距离/相似性度量
文章目录欧式距离闵可夫斯基距离马氏距离卡方chi-squarefisher score余弦相似度互信息pearson相关系数Jaccard相关系数KL散度JS距离DTW距离相似度和距离度量在机器学习中非常重要。因此这里做一点总结。欧式距离最简单的,从小都会,是高维空间中两个点的直线距离(以二维空间为例就很好理解)。闵可夫斯基距离曼哈顿距离就是模的和,比如在二维空间,就是两点的差的绝对值之和。马氏距离这里开始复杂一点了,扯到了概率分布,即开始不再只是简单考虑这两个向量本身,而是把他们都原创 2020-10-19 21:30:07 · 12400 阅读 · 0 评论 -
两种归一化的对比(标准化 VS 缩放),都会改变数据分布!
标准化即把一个向量的均值和标准差算出来,然后每一个分量都减去均值再除以标准差,得到的就是归一化之后的结果。归一化之后的数据有正有负,服从均值为0方差为1的标准正态分布。实验:归一化前后,数据分布不同在matlab中生成一组正态分布的随机数a = random('Normal', 3,3, [1, 100]);%均值为3,标准差为3,1行100列figure,plot(a,'b'),hold onb = (a - mean(a))/std(a,0,2);%std(a,0,2)对于行向量求标准原创 2020-10-10 17:07:20 · 6618 阅读 · 5 评论 -
机器学习性能指标 (accuracy精度, precision查准率准确率,recall查全率召回率,F1值,ROC曲线,PR, AOC)
文章目录分类任务预备知识准确率 accuracy精确率 precision,也叫查准率召回率 recall,也叫查全率F1值,精确率和召回率的调和均值ROC,用于评价一个分类器的好坏AUC, area under curve,ROC曲线下的面积示例回归任务MAE,平均绝对误差,L1范数损失MSE,平均平方误差,L1范数损失参考文章1参考文章2分类任务预备知识混淆矩阵,是一个两行两列的矩阵,由TP, FP, FN, TN组成,对角线上是TP和TN, 即分类正确的,而不再对角线上的都是分类错误的。原创 2020-09-28 12:33:12 · 3372 阅读 · 2 评论 -
测试集可用作验证集;验证集不能来自训练集!(交叉验证,留一法)
验证数据只是用来让我们看网络训练情况,以调整超参数,所以网络训练并没有真的用到他们,因为验证期间没有计算梯度,没有更新参数,所以验证数据完全可以用来测试哦原创 2020-06-18 11:47:23 · 16380 阅读 · 16 评论 -
稀疏自编码器的隐层激活函数不能用relu,要用sigmoid
我看的资料是Andrew课程的配套pdf,大家可以去网上找:为什么不可以用relu本文不讲稀疏自编码器的理论和原理,网上资料很多,上面的论文也讲得很好。直接说问题。最近用稀疏自编码器做点事情,需要在传统普通自编码器的均方损失上加点正则化项,即稀疏性项。看了论文里稀疏自编码器的思想以及对应的数学推导后,开始动手做。但是很快遇到一个没想到的问题,全网基本搜索不到这个问题,很多博文都是把稀疏自编码器的理论推导讲完就没了,或者有一点实验性的代码,但是看不太出来使用的损失函数和KL散度的计算。我遇到的.原创 2020-06-09 11:31:17 · 2228 阅读 · 1 评论 -
监督学习三要素,涵盖监督学习的全程前因后果
文章目录统计学习:==基于数据==构建==概率统计模型==,再用这些模型对新数据进行预测和分析总述统计学习方法的分类监督学习基本概念建模统计学习方法为什么很重要统计学习三要素:模型,策略,算法统计学习:基于数据构建概率统计模型,再用这些模型对新数据进行预测和分析总述基于数据,所以是数据驱动的学科。对数据的分析可以让我们获取新知识,新发现。学习的对象:数据,data。数据很多样,包括各种数字,文字,图像,视频和音频以及他们的组合对于数据的假设,也是统计学习的前提:同类数据具有一定的统计规律性。这原创 2020-06-05 11:37:22 · 2336 阅读 · 0 评论 -
自编码器的原始形式和各种变体
本文参考维基百科文章目录最简单的原始形式:非循环前馈神经网络欠完备自编码器 undercomplete autoencoders过完备自编码器 overcomplete autoencoders变体正则化自编码器 Regularized autoencoders稀疏自编码器 Sparse autoencoders用KL散度构造稀疏惩罚项用L1或L2正则化项构造稀疏惩罚项手动设0:K-sparse...原创 2020-04-15 16:41:00 · 1835 阅读 · 0 评论 -
无监督学习Unsupervised learning
文章目录机器学习三大分支:有监督学习,无监督学习,强化学习无监督学习对输入的无标签数据的先验概率密度进行建模有监督学习试图推断出条件概率密度PX(x∣y)P_X(x|y)PX(x∣y)无监督学习试图推断输入数据的先验概率分布PX(x)P_X(x)PX(x)无监督学习的两种主要方法:PCA和聚类PCA(主成分分析)自编码器:以无监督方式学习数据编码的神经网络,被称为非线性PCA聚类分析无监督学习...原创 2020-04-14 12:08:02 · 858 阅读 · 0 评论 -
逐层贪婪预训练(解决梯度消失的第一个成功方案,但现在除了NLP领域外很少使用)
起因/背景:梯度消失 vanishing gradient problemDNN的训练中,由于梯度消失,即输出层的错误在反向传播的过程中会显著地越来越小,所以靠近输入层的层的梯度就接近0, 所以这些层的参数就会得不到更新。而只有靠近输出层的那几层的参数得到了很好的更新。这是比较深的多层NN训练的一个难点。Training deep neural networks was traditional...原创 2020-04-08 15:50:20 · 4075 阅读 · 1 评论 -
交叉验证和验证集不是一回事!
之前一直不明白交叉验证的具体意思,以为带个验证俩字,跟验证集一定有啥关系,结果并没有!!!最近做实验,由于数据集太小,只有40条数据,要用留一法交叉验证,翻遍了网上的帖子都说把数据分为K份(我这k=40),k-1份用于训练,剩余一份用于测试,大家都说的很清楚了,就是字面意思,我却一直还是迷迷糊糊,总觉得必须要和验证集(即训练集,验证集,测试集)扯上关系,然后想了半天,决定在39份数据里再分训练集...原创 2019-12-08 10:33:27 · 4418 阅读 · 9 评论 -
NN权重初始值及其对各层激活值分布的影响,权值衰减
NN中每一个Affine层的权重参数的初始值是非常重要的,甚至会影响学习是否成功。但幸好我们已经有很多前辈总结出了比较好的初始值,以及判定一组初始值是否可以取得好的学习效果的方法。权值衰减有一种抑制过拟合,提高泛化能力的技术,叫做权值衰减,weight decay, 它的目的是减小NN的权重参数。但是虽然较小权值参数可以获得好的学习效果避免过拟合,我们却不可以把权重的初始值设置为0!!! 这...原创 2019-08-21 15:53:38 · 1609 阅读 · 0 评论 -
梯度确认(比较数值微分法和反向传播法计算的梯度值的差是否足够小,验证反向传播计算梯度值的正确性)
反向传播是利用解析的方式推导梯度的计算式,但由于NN网络复杂,容易推导错误;数值微分求梯度虽然更耗时,但结果一定基本是正确的;所以我们把两种梯度的值作差观察差距,验证BP计算的正确性。# 2层网络,一个隐层,结构:784-50-10# 梯度确认,比较数值梯度计算值和反向传播梯度计算值的差# 以验证反向传播法梯度计算的正确性from dataset.mnist import load_mn...原创 2019-08-16 17:04:40 · 1683 阅读 · 1 评论 -
NN学习技巧之参数最优化的四种方法对比(SGD, Momentum, AdaGrad, Adam),基于MNIST数据集
前面几篇博文分析了每一种参数优化方案,现在做一个对比,代码参考斋藤的红鱼书第六章。实验对mnist数据集的6万张图片训练,使用5层全连接神经网络(4个隐藏层,每个隐藏层有100个神经元),共迭代2000次,下图是损失函数随着训练迭代次数的变化:可以看到SGD是最慢的,而AdaGrad最快, 且最终的识别精度也更高,这并不是一定的,跟数据也有关主要代码:(完整代码可去图灵社区找红鱼书,随书下...原创 2019-08-21 15:38:42 · 1811 阅读 · 3 评论 -
误差反向传播的python实现(简单高效计算梯度值)
NN的学习中需要计算权重和偏置参数的梯度,对于梯度的计算,很容易想到数值导数,即前向差分dx=f(x+h)−f(x)hdx=\frac{f(x+h)-f(x)}{h}dx=hf(x+h)−f(x)或者改进一点,用中心差分(更接近准确的导数值)dx=f(x+h)−f(x−h)2hdx=\frac{f(x+h)-f(x-h)}{2h}dx=2hf(x+h)−f(x−h)h取一个接近0的数值...原创 2019-08-15 21:13:38 · 2534 阅读 · 0 评论 -
用Python搭建2层神经网络实现mnist手写数字分类
这是一个用python搭建2层NN(一个隐藏层)识别mnist手写数据集的示例mnist.py文件提供了mnist数据集(6万张训练图,1万张测试图)的在线下载,每张图片是28∗2828*2828∗28的尺寸,拉长为1∗7841*7841∗784的向量作为NN的输入,隐藏层设置了50个神经元,输出层由于是十分类(数字0-9)所以设置了10个神经元,所以网络的架构是784-50-10;设置的迭代...原创 2019-08-15 15:48:23 · 2322 阅读 · 0 评论 -
正则化 交叉验证
机器学习中的范数规则化之L0、L1与L2范数知识点 | 关于机器学习的超全总结看过的最好的讲训练集验证集测试集的文章!如何正确使用机器学习中的训练集、验证集和测试集?这个图完美了...原创 2019-10-10 17:26:32 · 301 阅读 · 0 评论 -
NN学习中的技巧之(一) 参数的最优化之Adam
Momentum参照小球在碗中滚动的物理规则进行移动AdaGrad为每个参数适当调整更新步伐Adam是2015年提出的新方法,它是Momentum和AdaGrad的结合体,,融合了两种方法的优势代码:# Adam.pyimport numpy as npimport matplotlib.pyplot as pltclass Adam: def __init__(s...原创 2019-08-20 14:41:50 · 2112 阅读 · 0 评论 -
用反向传播学习识别mnist手写数字(mini-batch版)
# BP_Study.py# 反向传播学习,mnist手写数字分类# 2层网络import numpy as npimport timefrom dataset.mnist import load_mnistfrom TwoLayerNet import TwoLayerNetimport matplotlib.pyplot as pltstart = time.clock()...原创 2019-08-17 02:11:15 · 1336 阅读 · 1 评论 -
NN学习中的技巧之(一) 参数的最优化之SGD
文章目录一、NN参数的最优化1、SGD(Stochastic Gradient Descent)随机梯度下降二、权重参数的初始值三、超参数的设定四、专治过拟合:权值衰减 & Dropout五、Batch Normalization一、NN参数的最优化NN的学习实质上就是区找到使得损失函数最小的那组参数,包括权重和偏置,所以这就是一个参数寻优的过程,是最优化问题。但NN中的参数空间非常庞...原创 2019-08-17 17:49:25 · 1350 阅读 · 0 评论 -
4种聚类(kmeans, kmeans++,层次聚类,DBSCAN密度聚类)
k-meansk-means++系统聚类/层次聚类原创 2019-09-22 10:35:47 · 3506 阅读 · 3 评论 -
梯度下降法python实现
Gradient descent,是一个一阶最优化算法,也叫最速下降法,用于寻找函数的极小值点,迭代搜索的方向是当前点的梯度反方向。用于寻找函数的极大值点的方法叫做梯度上升法,本质和梯度下降一样,只是迭代搜索的方向是当前点的梯度方向。梯度下降法,是一种数值优化方法,经常用于求解机器学习算法的模型参数,即无约束优化问题(我们知道这种问题在连续情况下,直接对所有变量求偏导,解析解就可能是极小值...原创 2019-08-09 22:32:50 · 690 阅读 · 0 评论 -
NN学习中的技巧之(一) 参数的最优化之AdaGrad
AdaGrad中的Ada是Adaptive之意,即“自适应的”,什么自适应呢,这里是指NN中的学习率,可以自适应的调整,并且是每一个参数有自己专门的调整,不是全体参数的学习率同时调整(共享一个学习率)。NN的学习中,学习率对于学习效果非常重要。学习率太大,一次学太多,容易太发散,跳来跳去的,难收敛还慢;学习率太小,则学的慢,效率低。所以自适应减小学习率是很容易想到的解决方案,也叫 learini...原创 2019-08-20 14:19:59 · 1359 阅读 · 0 评论 -
NN中的学习技巧之(一)参数的最优化之 Momentum
前面的博文里说了SGD,最基础的一个梯度下降优化算法,在SGD之后还有很多改进版本的算法,比如动量法,下面我降动量法扥别作用于两个函数,第一个是完美凸函数,第二个则是非凸的香蕉函数函数1:(Rosenbrock函数)f(x,y)=(a−x)2+b(y−x2)2f(x,y)=(a-x)^2+b(y-x^2)^2f(x,y)=(a−x)2+b(y−x2)2取a=1,b=100从下图可以看出,...原创 2019-08-20 11:36:17 · 5235 阅读 · 0 评论 -
Boltzmann Machine玻尔兹曼机
本文参考Hinton发表于2007年的一篇论文,链接在此本渣英语并不是很烂,但最近发现看长篇的英文文献总是看的时候很明白,但眼睛拿开就特别容易忘记···所以很多重点我翻译过来,变成中文一下爽多了。并不是完全不看英文哈,毕竟地道和专业的文献写作技术还是需要不断打磨的,而且很多时候只看单一语言不容易懂,偶尔你只看中文会很迷惑,看看原英文就一下明白了,因为翻译毕竟不能传神,有时候只看英文也会很迷惑,...原创 2019-07-16 12:45:11 · 3823 阅读 · 0 评论 -
主成分分析PCA(哲学思想:抓住主要矛盾)
这是一个经典的说烂了的好东西。PCA 就是 离散KL变换。手推KL变换的详细步骤见这里。为什么要发明并使用PCA?即什么需求驱使了PCA的诞生呢?——在社会经济的研究中,为了全面系统的分析和研究问题,必须考虑许多经济指标,这些指标能从不同的侧面反映我们所研究的对象的特征,但在某种程度上存在信息的重叠,具有一定的相关性。这个说法大家都懂,非常好理解。最早的使用案例一项十分著名的工...原创 2019-06-13 10:58:08 · 968 阅读 · 0 评论 -
线性模型(四)支持向量机(SVM)
(一) 间隔和支持向量SVM(Support Vector Machine)的思想和其他线性模型做2分类一样,都是找个超平面(hyperplan)然后一刀切。但SVM这么成功(在90年代直接造成了NN的第二冬),自然有其独到之处,那就是在超平面的概念上,多引入了“间隔”和"支持向量"的概念。可实现分类的超平面不唯一,我们怎么选择一个更好的超平面呢?直观上,应该是去找位于两类样本的“正中间”的那...原创 2019-05-12 23:17:04 · 817 阅读 · 0 评论 -
线性模型(三)逻辑回归logistic regression
逻辑回归,也叫对数几率回归,它先回归出一个预测值,再用一个函数(sigmoid函数)把预测值转换为0 or 1类的概率从而实现分类。前面讲的最小二乘只能回归,只是求解了一个拟合模型,对于新数据可以预测出一个具体的实值,却止步于此,不能用于二分类。探究一下“逻辑回归”和“对数几率回归”两个名字,里面的用词也承载了一些信息量。“逻辑”即“真”“假”,也就是布尔类型,不是0就是1,这是因为逻辑回归的基...原创 2019-05-12 16:36:24 · 522 阅读 · 0 评论 -
贝叶斯决策论(Bayesian decision theory)
机器学习,信号检测都会涉及到和贝叶斯有关的很多方法,很容易混乱抓不住本质,最近学习贝叶斯分类器,需要贝叶斯决策论做基础,特此记录梳理。顾名思义,贝叶斯决策论是利用概率来进行决策,是概率框架下的方法。它属于机器学习的分支——统计机器学习。本文探讨的是贝叶斯决策的思路,思想,通过逐点推导,让你知道它到底基于什么,目的又是什么。(一)以多分类任务为例本文以多分类任务为例,讲解到底怎么用概率做...原创 2019-05-21 14:27:28 · 5799 阅读 · 0 评论 -
线性模型(二)Fisher线性判别分析
线性判别分析,Linear Discriminant Analysis,一种用于二分类的很经典的线性学习方法,1936年由Fisher 提出,so也称为Fisher判别分析。它和PCA一样,也是一种降维方法。英国大统计学家Fisher,“a genius who almost single-handedly created the foundations for modern statisti...原创 2019-05-11 17:47:57 · 6366 阅读 · 2 评论 -
线性模型(一)感知机
机器学习可分为线性模型和非线性模型两类,线性模型如最古老经典的感知机,逻辑回归(对数几率回归),Fisher判别分析,90年代一度独领风骚的支持向量机,本文将详解感知机。感知机是现在NN的鼻祖,不过下面写的感知机是最原始的纯线性版本,没有加激活函数,即没有任何非线性元素被引入。(1)模型y=wTx+w0y=\boldsymbol{w}^T\boldsymbol{x}+w_0 y=wTx+w...原创 2019-05-11 14:51:29 · 1602 阅读 · 0 评论 -
拉格朗日对偶函数&拉格朗日对偶问题
前段时间学了拉格朗日乘子法,学会了构造拉格朗日函数,也就是学会了把带约束(等式或不等式)的优化问题转化为无约束优化问题,私以为这部分就学完了到此为止了,没想到今天推导SVM的数学模型,要推原问题的对偶问题,愣是艰难地卡了大半天,一直没明白对偶问题的含义,原来拉格朗日函数得到以后还要进一步往下推出拉格朗日对偶函数,对偶函数的极值问题就是原问题的对偶问题,本文专门梳理和总结一下,以作学习记录。本...原创 2019-05-19 16:44:12 · 26615 阅读 · 7 评论 -
SMO(Sequential minimal optimization)序列最小优化算法
SMO在1998年由微软研究院的John C.Platt提出,提出是为了训练SVM的,原本训练SVM需要解一个很大规模的二次规划问题,SMO把它转化为了多个小的二次规划问题,于是就能解析求解,不需要耗时地用循环迭代进行数值求解了,而且还避免了矩阵运算。SMO需要的内存和训练集大小成线性比例,所以可以处理大规模的训练集。论文地址:https://www.microsoft.com/en-us/re...原创 2019-05-19 15:51:09 · 282 阅读 · 0 评论 -
坐标上升/下降法(Coordinate Ascent/Descent)
学SVM时遇到二次规划要用SMO(Sequential Minimal Optimization序列最小优化)算法,在网上看资料发现坐标上升法的思想和SMO很相似,也特别有意思,特此详细挖一下。...原创 2019-05-19 10:24:16 · 919 阅读 · 0 评论 -
CNN卷积神经网络(二)网络架构常见形式和参数设置
本文参考了 这篇教程(一)网络架构CNN的网络架构中最常见的形式就是堆叠好几个[CONV-RELU]层再跟上一个POOL层,重复几次,直到输入图像已经被转换为空间尺寸很小的输出 。即:∗*∗表示重复POOL?表示可能池化也可能不池化0≤N≤30\leq N\leq30≤N≤30≤K<30\leq K<30≤K<30≤M0\leq M0≤M比...原创 2019-07-18 17:30:52 · 1918 阅读 · 0 评论 -
CDBN卷积深度信念网
斯坦福大学的Honglak Lee,Andrew Y. Ng的学生的论文。原创 2019-08-03 19:46:28 · 3697 阅读 · 1 评论 -
Deep Belief Network深度信念网
本文参考Hinton2007年发表的一篇论文,链接在此深度信念网是由多层随机潜变量构成的概率生成模型。最底层单元的状态表示一个数据向量。最上面的两层之间有无向的对称连接,形成联想记忆。较低的层从上面的层接收自顶向下的、定向的连接。DBN的两个最重要的属性:高效的,一层一层的过程,用于学习自顶向下的权重,这些权重决定了一层中的变量如何依赖于上一层中的变量。学习之后,每一层的...原创 2019-07-16 18:42:16 · 583 阅读 · 0 评论 -
机器学习中的损失函数(均方误差,交叉熵误差)及其python实现
神经网络NN以某个指标为线索寻找最优参数,NN的学习中用的指标被称为损失函数,它是表示NN性能的指标,即NN对训练数据在多大程度上不拟合,不一致。很多函数都可以作为损失函数loss function,但常用的是均方误差和交叉熵误差等。一、均方误差Mean Squared ErrorE=12∑k(yk−tk)2E=\frac12\sum_{k}(y_k-t_k)^2E=21k∑(yk−t...原创 2019-08-08 19:37:54 · 8445 阅读 · 0 评论 -
神经网络基础(重要特征,数据是核心,过拟合,泛化能力,损失函数)
这篇博文真的很难梳理出来一个逻辑···就是个基础重点知识的杂碎集合,我使劲概括成了6个问题,将就将就1、学习—>损失函数—>梯度下降神经网络的重要特征就是可以从数据中学习, 即, 由数据自动决定最优的参数。为了使NN进行学习,就必须引入损失函数。学习,就是以损失函数为基准,找出使它达到最小的参数。为了找到尽可能小的损失函数的值,就要使用利用了函数斜率的梯度下降法。2、为什...原创 2019-08-08 18:44:54 · 1500 阅读 · 0 评论 -
python 查看函数的doc string(文档字符串)属性
import syssys.path查看模块导入的搜索路径原创 2019-08-05 18:28:37 · 3256 阅读 · 0 评论