机器学习
DX_dove
致力于计算机视觉的开发。
展开
-
李飞飞CS231n课程-中文笔记(包括课后作业要求)翻译汇总
CS231n官方笔记授权翻译总集篇发布 - 智能单元 - 知乎专栏 https://zhuanlan.zhihu.com/p/21930884CS231n课程笔记翻译:图像分类笔记(上) - 智能单元 - 知乎专栏 https://zhuanlan.zhihu.com/p/20894041CS231n课程笔记翻译:图像分类笔记(下) - 智能单元 - 知乎专栏 https://zhuanlan转载 2017-09-07 22:47:19 · 16708 阅读 · 2 评论 -
模式识别1-线性分类器(感知机)
1.1:感知机算法原理 首先明确,感知机的输入和输出,输入就是一组向量,每个向量都有n个特征值,输出为每个向量的所属类别,对于二分类而言,就是+1和-1. 这个可以用sign函数来模拟: 输入空间到输出空间的函数为:f(x) = sign(w*x +b); 函数理解:w,b为感知机模型参数,w是一个权重向量,b是偏置,w*x是内积,sign是符号函数,当w*x+b>0时候,函数输出为原创 2017-10-25 12:44:01 · 1867 阅读 · 0 评论 -
深度学习(1)-cuda,cudnn,tensorflow(GPU)的环境配置
这里记录一下本人安装tensorflow的一些关键步骤,本人安装主要参考了下面几个链接; 1.https://www.jianshu.com/p/35c7fde85968?from=singlemessage 2.http://blog.csdn.net/michaelliang12/article/details/60106686 这两个链接主要完成两个步骤:cuda8.0,cudnn的安...原创 2018-03-05 23:00:54 · 726 阅读 · 0 评论 -
贝叶斯模型的理解(1)
一直以来,都在听说贝叶斯概率模型,这里记录一下自己对贝叶斯概率模型的一些理解。 贝叶斯模型的建立主要有3个概念:1.先验概率。2.最大似然函数。3.后验概率这3个概念怎么建立联系呢,以投硬币这个简单的例子来理解最好。 例子: 首先为抛硬币制定一个规则:押一块钱,抛10次硬币,出现正面的次数小于等于6次就额外赢得一块钱,否则就是输掉押的一块钱。1.先验概率: 根据概率论知识:抛硬币实...原创 2018-03-26 21:00:54 · 10065 阅读 · 0 评论 -
贝叶斯模型的理解(2)
读了之前一篇文章,应该对先验信息和最大似然函数有了一定的理解,那下面来说贝叶斯模型最后一个总要概念:后验概率。 在上篇文章中,我们通过求解似然函数的概率最大值,求得了参数r,大家还会发现,提前抛硬币的次数不同,r最后的取值是不同的。 大家记住这个公式:后验概率公式 下面解释这个公式中的组成成分的意义:1.这个公式中p(r)就是先验信息,正面朝上的概率。2.p(yN|r)就是是似然...原创 2018-03-26 21:42:04 · 5443 阅读 · 0 评论 -
深度学习中batch_normalization的理解
下面是自己对神经网络中batch_normalization(批标准特征化)的一个小结,很容易理解:1.让每一层神经网络处理的数据更加具有规律性,从而神经网络也可以更加容易学习到数据中的规律。 2.对于一些激励函数,比如tan,激励函数只对一部分区间的数据比较敏感,其他地方的数据变化,做出的反应不大。 比如下面一个图: 数据只对图中红色区域比较敏感,而batch)normalizat...原创 2018-06-28 16:34:56 · 773 阅读 · 0 评论 -
ubuntu下gcc的升级
如果要升级gcc,直接用下面命令会报错:sudo apt-get upgradesudo apt-get install gcc-5 g++-5最后查阅资料,得用下面几行命令:sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get updatesudo apt-get install gcc-snapshots...原创 2018-10-12 23:28:15 · 1210 阅读 · 0 评论 -
反卷积和卷积的输出和输入尺寸关系
1.反卷积:利用反卷积求输出尺寸的大小为N(out) = (N(in)-1)× s +k -2ps:stridek:kernel_sizep:padding2.卷积:N(out) = (N(in) − k + 2p )/s+1输入图片大小 N:W×Ws:stridek:kernel_sizep:padding...原创 2018-10-20 13:52:39 · 8369 阅读 · 0 评论 -
机器学习中的L1正则,L2正则的理解
一.在深度学习中,影响整个模型最后效果的我认为有3个因素:1.数据的质量,多少.2.网络的结构,网络的深度等.3.损失函数的设计.最常用也是最容易想到的损失函数就是L1损失和L2损失.这也是很多深度学习论文的损失函数的基础项目.对于L1损失,L2损失,相信很多看过吴恩达机器学习课程的同学都会知道**“正则项”**的概念(L1-norm,L2-norm),在tensorflow中,也有专门...原创 2019-03-05 12:24:43 · 728 阅读 · 0 评论 -
模式识别(3)-SVM分类算法
3.1.SVM算法原理和分析 SVM(Support Vector Machines),中文名字叫做支持矢量机。SVM也是寻找一个超平面,使得训练集中的点距离分类面尽可能的远,就是让这个分类面两侧放入空白区域最大。 支持矢量就是距离分类平面最近的一些样本点,对决策面的选取有决策作用。SVM训练代码:clear allclose allN1=440;for i=1:N1x1(1,i)=-1原创 2017-10-25 22:13:26 · 2280 阅读 · 0 评论 -
模式识别2-线性分类器(最小二乘法)
2.1:算法原理分析 有两类样本,X1,和X2,如果将这两类数据正确分类,则X1对应的y=1,X2对应的y=-1,但是,往往分类的结果不会都正确,这个时候就有分类错误,将这种错误用就是期望值与真实值的误差,用最小二乘法计算出分类错误: j(w)=E[|y-xT*w |^2] w=argmin(j(w)) 现在要做的是求出让代价函数j(w)取最小值的时候,w的取值。 要让j(w)最小原创 2017-10-25 12:46:52 · 6208 阅读 · 0 评论 -
机器学习(1)-KNN算法理解
开始弄机器学习了,一点一点学习机器学习中相关的概念和算法。k-NN用来干什么的 简单来说,我理解的就是分类,就是根据已知训练集样本的种类,来对测试集样本做一个分类。 比如,我有1000张训练样本图片,总共有3个类,然后测试集有500张图片,就可以利用KNN算法根据训练样本的1000个数据来对500张未知分类的样本做一个分类。现在应该了解kNN的用途了吧。2.K-NN算法原理 首先原创 2017-09-15 21:09:39 · 771 阅读 · 0 评论 -
机器学习(4)-理解SVM的损失函数和梯度表达式的实现+编程总结
1.对于SVM这里总结下代码实现SVM的两种代码实现(for循环和矩阵操作) 首先看看SVM的损失函数,梯度函数 损失函数最终形式: L = (1/N)∑iLi + λR(W) 其中: R(W) = ∑k∑s (Wk,s)2 Li = ∑j≠yi max(0, (xiW)j−(xyiW)j+Δ) 理解:yi表示提前知道第yi个分类是正确的。比yi大的评分表示判断原创 2017-09-24 15:55:34 · 2836 阅读 · 1 评论 -
机器学习(5)-理解softmax的损失函数和梯度表达式的实现+编程总结
softmax也是一个用于多分类的线性分类器。 首先来看看softmax的损失函数和梯度函数公式 结合惩罚项,给出总的损失函数: L = -(1/N)∑i∑j1(k=yi)log(exp(fk)/∑j exp(fj)) + λR(W) 下面有几个准备函数也要理解: Li = -log(exp(fyi)/∑j exp(fj)) :这个就是最基本的softmax函数,原创 2017-09-24 16:14:47 · 3552 阅读 · 0 评论 -
机器学习(6)-交叉验证代码实现原理和图像均值化预处理
交叉验证 在训练样本时候,通常会采用一种叫交叉验证的方法,就是将一份数据分为5份(也可以是其他份),然后遍历每一份做测试集,剩下的数据做训练集,这样,一份数据就可以被利用5次,增加了数据的利用率。 下面是代码#将数据分成num_fold份X_train_folds =np.array_split(X_train,num_folds)Y_train_folds = np.array_spli原创 2017-09-24 22:36:58 · 1040 阅读 · 0 评论 -
机器学习(7)-一些名词的理解
深度学习中经常看到epoch、 iteration和batchsize,下面按自己的理解说说这三个的区别:(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练 (2)iteration:1个iteration等于使用batchsize个样本训练一次;(3)epoch:1个epoch等于使用训练集中的全部样本训练一次举个例子,训练集有转载 2017-09-24 22:48:05 · 400 阅读 · 0 评论 -
机器学习(2)-SVM分类算法
SVM算法 SVM是一种很常见的分类算法,了解SVM算法就不从基本概念 去理解了,各种网页上的分享都是千篇一律。这里直接讲解怎么根据一幅图片的输入,来计算SVM的损失函数,权重矩阵的跟新,梯度下降法计算进行最优化。基本概念 前面介绍的KNN算法存在下面2点主要问题: 1.分类器必须记住所有训练数据并将其存储起来,以便于未来测试数据用于比较。这在存储空间上是低效的,数据集的大小很容易就以GB计原创 2017-09-16 13:57:47 · 1853 阅读 · 0 评论 -
机器学习(3)-一些常用的Python3.0函数
在这里记载一下我处理图片数据集时候,遇到一些函数;max()和argmax()max是Python的内置函数,而argmax()是numpy的调用函数。 A:是一个[m*n]的矩阵 max(A),求出矩阵A中的最大值 这里的A应该是一个n*1的矩阵。B:B[m,n]矩阵 argmax(),就是求出矩阵最大元素的索引,比如下面的A矩阵,求出就是np.argmax(A)=4,np.argma原创 2017-09-18 15:30:53 · 1110 阅读 · 0 评论 -
模式识别-高维空间降维的重要性
今天上了一节模式识别课,老师讲了几个结论,关于高维空间降维的重要性:1.通过公式的推导(这里就不推导了),会发现高维度空间的体积主要分布在壳部和角部。2.随着维度的增加,体积(Vc(正方形),Vr(圆形))会迅速增加。这样的好处是在样本空间,样本的分布会非常稀疏,不易重叠,利于分类。 然后老师又说了一句话:对高维进行概率密度函数设计特别困难,设计分类器也很困难,所以降维是必须的。 这里的理解是,原创 2017-11-01 12:41:25 · 3028 阅读 · 0 评论 -
L1正则、L2正则、Batch Normalization、Dropout为什么能够防止过拟合呢?
最近面试,被问到Batch Normalization为什么能够防止过拟合,为什么能够加快收敛速度,一时间没有答上来(失败啊…).现在简单记录下几种深度学习中常用的防止过拟合的技巧,以及为什么能有防止过拟合作用.L1正则:增加了参数矩阵的稀疏表达(参数矩阵中一部分参数为0),可以进行特征选择,通过保留重要的特征,舍弃不重要特征,达到防止过拟合效果.L2正则:将参数矩阵(y=wx+b,w就是矩阵...原创 2019-04-20 13:22:07 · 2768 阅读 · 0 评论