
机器学习
神兽乌鸦
学习是一种信仰!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Colab在线解压Google Driver上的zip压缩文件
今天才发现可以用Google的Colaboratory可以训练pytorch神经网络,真的太高兴了,这样就可以解决我渣渣的电脑没有GPU,无法训练大型神经网络的问题了。但是由于需要上传本地训练数据,很不方便,所以我就打算把本地数据打zip包上传到Google云盘,然后再在colab上用命令行下载解压过来训练,找了半天才找到办法,这里记录一下吧,主要代码如下:# 首先安装googledrivedownloaderpip install googledrivedownloader#接着下载解压from原创 2020-05-20 15:36:48 · 10871 阅读 · 9 评论 -
Pytorch实现性别识别,男女分类
本篇博文纯粹是作为一个记录,不会讲得太清楚,但是本人亲自运行验证,损失率达到了0.001,还比较满意,毕竟这是我的第一个机器识别程序。先看看项目目录:其中net.pkl和net_params.pkl是训练后保存的模型数据,data文件夹下放有训练用的数据和测试数据训练的数据我是从这里下载的训练数据下载接下来是训练用到的代码:#encoding=utf-8import torchi...原创 2020-04-23 14:28:30 · 9747 阅读 · 14 评论 -
林轩田机器学习基石笔记(第25节)——VC Bound
在第23-24节我们已经找到了上限函数mH(N)mH(N)m_H(N),那么是否把它代入到霍夫丁不等式就OK了呢?答案是否定的,我们最终会经过一系列证明把霍夫丁不等式变成如下的样子: 以下是证明步骤:第一步,把无限的Eout(N)Eout(N)E_{out}(N)变成有限个在霍夫丁不等式中,我们知道Ein(N)Ein(N)E_{in}(N)是有限的,但是Eout(N)Eout(...原创 2018-09-04 20:20:25 · 1224 阅读 · 0 评论 -
林轩田机器学习基石笔记(第26节)——VC Dimension
复习上限函数在第23-24节中,我们获得了成长函数的上限函数,并且上限函数又被被多项式Nk−1Nk−1N^{k-1}所包含住,即∑k−1i=0∑i=0k−1 \sum_{i=0}^{k-1}会被Nk−1Nk−1N^{k-1}所包含住,如下图: ∑k−1i=0∑i=0k−1 \sum_{i=0}^{k-1}与Nk−1Nk−1N^{k-1}的关系如下面两个表所示: 基于以上关系,所有...原创 2018-09-04 23:32:46 · 478 阅读 · 0 评论 -
林轩田机器学习基石笔记(第4节)
前面几节主要讲得是机器学习的概念,这里就不再赘述了,直接从第4节开始讲。看下面这张表,假设它就是银行发信用卡的参考因素,我们的目标就是让机器能够从这些参考因素中评定某一个客户是否符合信用卡发卡标准。 根据上表我们假设有以下输入输出: 其中XXX表示输入,输入的是客户的基本信息(即表格中的数据),YYY表示输出,决定发卡或者不发卡。有了以上输入输出以后,我们现在的目标是找出一个函...原创 2018-09-05 09:55:25 · 237 阅读 · 0 评论 -
林轩田机器学习基石笔记(第15节)——霍夫丁不等式解决机器学习不可行的难题
在第14节中我们知道,要实现机器学习是很难的,如下图: 我们可以保证我们的算法在训练集 DDD 中表现得很好,能够预测出所有的情形。但是我们却没有办法保证在测试集或者未知数据 TTT 中依然保持正确。那要如何解决一难题呢?答案就再概率论里面!看下面这张图,我们现在有一个罐子,里面装有橘色弹珠和绿色弹珠,其中橘色弹珠的真实比例是 μ ,则绿色弹珠的真实比例是1- μ。 现在我们要通过抽...原创 2018-09-05 10:18:07 · 590 阅读 · 0 评论 -
林轩田机器学习基石笔记(第6节)
第5节主要介绍了机器学习与统计学之间的关系,不用做太多了解,所以也可以跳过,直接进入本节。今天主要学习的问题就是如何让机器解决是非题,仍然以银行发信用卡为例,就是根据客户提交的资料去判断要不要给该客户发放信用卡。本节目标第4节我们提到过,机器学习的过程是我们需要一个ff f ,但我们不知道ff f 长什么样,这时候我们就需要从数据{xn,yn}{xn,yn}\{x_n, y_n\}中学...原创 2018-09-05 11:26:02 · 356 阅读 · 0 评论 -
林轩田机器学习基石笔记(第7节)——PLA算法
机器学习的流程如下图,我们的目标是找到 fff ,但是我们不知道 fff 长啥样,但是我们有一堆数据 DDD ,现在我们要用数据 DDD 进行训练,然后会得到一个假设集Hypothesis,接着我们再设计一条演算法,该演算法的任务就是从假设集Hypothesis中找到一个 ggg ,使得 g≈fg≈fg \approx f . 现在回到上一节提到的信用卡发卡问题,我们计算客户是否符合发卡要求...原创 2018-09-05 15:37:21 · 567 阅读 · 0 评论 -
林轩田机器学习基石笔记(第8节)——PLA循环停止条件的探讨
引言第7节我们讨论了如何找到一条线把所有的圈圈叉叉都分在不同的两边,但是其实有一个隐含的大前提,那就是圈圈叉叉的分布必须是线性可分的,如下第1张图。如果是线性不可分那么,如下第2、3张图是无法用PLA算法把圈圈叉叉分开的。 本节课我们就讨论在线性可分的前提之下,PLA循环什么时候才能终止。初步论证我们知道,如果yn(t)≠sign(WTtXn(t))yn(t)≠sign(WtTX...原创 2018-09-05 17:22:23 · 448 阅读 · 0 评论 -
林轩田机器学习基石笔记(第27节)——VC Dimension of Perceptrons
一、复习2D PLA算法如下图所示,左边红色部分表示如果数据集DDD是线性可分的情况下,PLA算法最终会停下来,我们会得到一条能够把所有数据都二分为两类的线段,该线段能够保证在已知的数据上犯错的概率为0,即Ein(g)=0Ein(g)=0E_{in}(g)=0。 图中右边部分,则通过霍夫丁不等式从侧面证明了如果我们数据量够大,并且dVCdVCd_{VC}已知的情况下,我们可以保证Ein(g)...原创 2018-09-09 12:12:19 · 545 阅读 · 0 评论 -
机器学习中权值W和偏导b与激活函数的关系
在机器学习中,我们经常会用到线性回归:y = Wx+b我们也会用到损失函数,损失函数的公式如下图:通过观察上面的式子我们发现,激活函数 σ\sigmaσ 包含着线性函数 Wx+b,这个时候损失函数就和权值W和偏置值b联系起来了。接着我们队损失函数的W和b分别进行求导:就像图中所说的,W和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,则w和b的大小调整得越快,训练收敛得越快。所以...原创 2018-10-25 10:58:24 · 3265 阅读 · 1 评论 -
二次代价函数、交叉熵代价函数、对数似然代价函数的应用场景
二次代价函数的局限性首先来说一下二次代价函数的局限性,看下面这张图:假设现在使用的激活函数是sigmoid,并且代价函数是二次代价函数,我们收敛得目标是1,那么A点的梯度比较大,B点由于离目标比较近梯度小,所以是合理的;但是如果我们的收敛目标是0,那么A点离目标比较近,所以梯度应该要小于B点,但是图中明明是A点的梯度大于B点,这是不合理的。交叉熵正式由于二次大家函数的这个局限性,我们需要...原创 2018-10-25 11:43:40 · 2420 阅读 · 0 评论 -
防止过拟合的方法
防止过拟合的方法:增加数据集出现过拟合的情况大部分是因为数据量过少,然而神经网络太过于复杂,所以增加数据集是十分有利于防止过拟合的。正则化方法C=C0+λ2n∑ww2C=C_0 +\frac{ \lambda }{2n} \sum_{w}w^2C=C0+2nλ∑ww2:C0C_0C0就是原来的代价函数,现在我们在代价函数上增加一个正则化项λ2n∑ww2\frac{ \lambda...原创 2018-10-25 16:22:54 · 312 阅读 · 0 评论 -
什么是凸函数和凹函数
原创 2018-12-01 10:20:52 · 79037 阅读 · 13 评论 -
林轩田机器学习基石笔记(第21-22节)——Break Point
Break Point在第19节的时候,我们对hypothesis进行归类的时候,发现所有的分类数量都≤2N≤2N \leq 2^N。如下图,当N<4的时候,effective(N)=2Neffective(N)=2Neffective(N)=2^N;当N≤4N≤4N \leq 4的时候,effective(N)<2Neffective(N)<2Neffective(N)N+...原创 2018-08-24 15:43:02 · 1362 阅读 · 0 评论 -
林轩田机器学习基石笔记(第1节)
我的经历在进行机器学习之前先说一下写这一系列笔记的想法吧。谈到机器学习很多人都觉得很难,看到一堆数学公式就望而却步,实话说我也觉得很难,但我还是想试试,毕竟很想自己做出一个产品来。回过头来说,本人非计算机科班出身,而且还是个高中数学从来没及格过的文科生,哈哈,说来搞笑!我学习编程可以追溯到高中时代,那时候很崇拜黑客,所以就开始了解编程方面的知识,但是没有机会接触,直到大一才开始学习Ja...原创 2018-08-04 09:49:49 · 402 阅读 · 0 评论 -
林轩田机器学习基石笔记(第16节)——概率论与机器学习建立连接
抽样与机器学习的对应关系我们不知道罐子中橘色弹珠的数量比例,对应在机器学习中就是我们不知道在hypothesis中哪个h(x) 是我们要找的弹珠表示x橘色的弹珠代表 h(x)≠f(x)h(x)≠f(x)h(x) \neq f(x)绿色的弹珠代表 h(x)=f(x)h(x)=f(x)h(x) = f(x)抽样得到的橘色弹珠的比例对应机器学习中对应 h(x)≠f(x)h(x)≠f(...原创 2018-08-14 10:17:43 · 555 阅读 · 0 评论 -
林轩田机器学习基石笔记(第17节)——有限多个hypothesis如何选到合适的g
上一节我们讨论的问题对应的是单个hypothesis的情况,那么现在如果有多个hypothesis的情况下我们该如何选到最合适的 g 呢?如果有一个 h(x) 在所有的训练数据中没有犯任何错误,那是否就意味着它就是我们所需要的 g 呢?答案是否定的!接下来我们就讨论这些问题。霍夫丁不等式告诉我们,从罐子中取样大部分情况是能够反映真实的弹珠分布情况,即Eout(h)≈Eout(h)Eout(...原创 2018-08-14 22:51:57 · 483 阅读 · 0 评论 -
林轩田机器学习基石笔记(第9节)——Pocket AIgorithm(口袋算法)
虽然我们证明了PLA最终会停下来,但是PLA存在以下几个问题:1、PLA假设的前提是数据线性可分,但是很多情况下都是线性不可的;2、即使PLA最终停下来,但是我们并不知道它什么时候会停下来。由于现实情况的复杂性,我们一般情况下我们几乎找不到完美的线性可分的数据,所以这时候计算机科学家们想到了一个办法,那就是找到一条线,这条线所犯的错误最少,用它来替代精准的线。数学表达式如下:上...原创 2018-08-11 21:34:54 · 1416 阅读 · 0 评论 -
林轩田机器学习基石笔记(第10-13节)——机器学习的分类
第10节主要讲到了多元分类(Multiclass Classification)的概念。第11节主要简单介绍了监督学习(Supervised)、非监督学习(Unsupervised)、半监督学习(Sei-Supervised)、强化学习(Reinforcement Learning)。第12节主要介绍Bath Learning(批量学习)、Online Learning(逐个学习)、Act...原创 2018-08-11 22:52:25 · 407 阅读 · 0 评论 -
林轩田机器学习基石笔记(第18-19节)——把无限hypothesis变为有限
有限多和无限多Hypothesis优劣势对比当hypothesis数量有限的时候(如下图small M),我们可以较为轻易的实现Ein(g)≈Eout(g)Ein(g)≈Eout(g)E_{in}(g) \approx E_{out}(g),但是却有一个弊端,那就是我们的选择太有限,不能保证能够找到足够好的g。 当hypothesis数量无限的时候(如下图large M),我们会有更大的选择...原创 2018-08-19 00:03:33 · 766 阅读 · 0 评论 -
林轩田机器学习基石笔记(第23-24节)——上限函数Bounding Function
本节我们讨论上限函数,所谓的上限函数就是,成长函数露出Break Point的点。只要我们知道了该点的值,就可以知道Hypothesis Set最多可以画多少条Dichotomy。第20节的时候我们学到成长函数,当时我们分别对几种不同的分布进行了讨论,分别推导出了不一样的成长函数。但是学完本节后我们就不需要关心具体是什么成长函数,直接可以根据上限函数推算出Dichotomy的数量了。归...原创 2018-08-26 14:55:10 · 1644 阅读 · 0 评论 -
林轩田机器学习基石笔记(第20节)——成长函数growth function
Dichotomy这节课引入一个新的概念Dichotomy,所谓的Dichotomy其实就是我们前一节学到的effective(N)。成长函数(growth function)其实growth function也是我们前面学得effective(N)。引入成长函数的目的是要消除对X的依赖。Positive Rays 现在假设我们有一堆的X,然后我们要做得就是找到一条线 h(...原创 2018-08-23 12:07:28 · 5605 阅读 · 2 评论