神经网络与机器学习笔记
文章平均质量分 88
用来记录自己在学习神经网络和机器学习过程中所记录的笔记
LXYTSOS
计算机视觉与强化学习。
展开
-
SVM
支持向量机(Support Vector Machine,SVM)是众多监督学习方法中十分出色的一种,几乎所有讲述经典机器学习方法的教材都会介绍,下面总结一下关于SVM的知识点。常见的几何性质原始公式的导出SVM的性质对偶形式推导KKT条件SMO算法...原创 2020-01-16 21:34:36 · 404 阅读 · 2 评论 -
平方误差损失与交叉熵损失
平方误差和交叉熵是神经网络中很常用的损失函数,那么平方误差和交叉熵分别适合什么场景呢?这个问题也是算法工程师面试中的高频考点,其中不乏腾讯微信。那么在本文中,就来详细解释这两种损失函数。平方误差这里以一个简单的神经元为例,只有一个输入和一个输出:接下来我们使用平方误差损失来训练这个神经元,接受输入1.0,目标输出0.0。首先将权重初始化为0.6,偏置0.9,学习率为0.15,我们来看看损失...原创 2020-04-13 17:15:56 · 2391 阅读 · 0 评论 -
手推DNN,CNN池化层,卷积层反向传播
反向传播算法是神经网络中用来学习的算法,从网络的输出一直往输出方向计算梯度来更新网络参数,达到学习的目的,而因为其传播方向与网络的推理方向相反,因此成为反向传播。神经网络有很多种,那么它们还有其中包含的一些结构,是如何计算出梯度来的呢,在这里为大家手动推导DNN,池化层,卷积层的求导过程。DNN反向传播DNN的反向传播推导相对来说比较简单,那么在卷积网络中如何反向传播呢,特别是在池化层和卷积...原创 2019-08-24 12:10:34 · 1595 阅读 · 2 评论 -
深度学习问答
Q:数据拆分时为什么最好拆分成训练集、验证集、测试集,而不是训练集和测试集?A:因为在开发模型的时候总是需要调节模型超参数,比如层数或层的大小。在调节超参数的过程中会将模型在验证数据上进行测试,这个调节过程本身也是一种学习,如果基于模型在验证集上的性能来调节超参数,会很快导致模型在验证集上过拟合,即使没有在验证集上训练。这是因为每次基于在验证集上的性能来调节超参数的时候,关于验证集的一些信息会泄...原创 2019-07-27 18:46:27 · 355 阅读 · 0 评论 -
初识Keras
什么是KerasKeras是一个深度学习框架,与PyTorch不同的是,Keras提供高层次的模型构建模块,不处理张量操作,求微分等逻辑。而PyTorch中用户可以自己定义网络前向和反向传播的逻辑。而这些底层的操作,Keras则依赖其他后端来实现,在Keras中可以选择TensorFlow或Theano作为后端。而Theano现在已经停止维护了,所以还是用TensorFlow作为计算后端,这也是...原创 2019-07-25 21:39:23 · 436 阅读 · 0 评论 -
大家的人工智能——决策树
在Logistic回归中,我们接触到了分类任务,今天我们将要介绍的是决策树,它是一种用于分类与回归的算法,这里主要讨论用于分类的决策树。决策树初探从名字中就不难猜出决策树模型是呈树形结构,在分类问题中,基于特征对实例进行分类,我们可以想象有一系列的if-else规则集合,通过判断特征是否符合这些规则来对实例进行分类。决策树结构决策树是一种对实例进行分类的树形结构,它由结点和有向边组成。而结...原创 2019-06-30 16:28:49 · 5861 阅读 · 0 评论 -
目标检测第二弹——Fast RCNN
Fast RCNNFast RCNN训练VGG19网络速度比RCNN快9倍,测试速度快213倍,与SPP网络相比,训练速度快3倍,测试快10倍,并且更准确。介绍在当时,目标检测训练任务都是分多个阶段进行模型训练,缓慢且不优雅。因此在Fast RCNN中提出了一种单阶段的训练方式,将物体分类和位置确定结合起来。测试阶段处理一张图片只需要0.3秒,并且在PASCAL VOC 2012数据集上更准...原创 2019-06-24 10:10:44 · 552 阅读 · 0 评论 -
大家的人工智能——Logistic回归
在《大家的人工智能——线性回归》中,什么是拟合,代价函数,梯度下降,相信大家已经对这些基本概念有所了解。线性回归的应用场景是输出为连续的数值,比如下个月的房价多少,明天的气温多少。而在机器学习中还有一类任务,它的输出是离散的,比如明天他会不会去游泳(会或不会),这是狗还是猫,这就是分类任务,而Logistic回归就是处理这种分类任务的,不要看他的名字里面有“回归”两个字,但是它其实是个分类算法。它...原创 2019-06-20 21:35:17 · 540 阅读 · 0 评论 -
目标检测第一弹——RCNN,SPP
R-CNN使用大容量卷积神经网络(CNN)自下而上生成候选区域(region proposals),以便定位和分割对象。标记训练数据稀缺,使用监督式预训练,基于特定领域的微调模型进行辅助,性能显著提升。R-CNN系统综述输入一张图像自下而上提取出大约2000个候选区域,对每个候选区域,首先将框稍微扩张使其包括部分上下文信息,然后将扩张后的图像resize到227 × 227(CN...原创 2019-06-16 20:51:48 · 637 阅读 · 0 评论 -
大家的人工智能——正规方程
在《大家的人工智能——线性回归》中,我们介绍了如何找到一条直线来拟合训练数据,下面把之前的一元线性回归扩展到多元线性回归:y=θ0+θ1x1+θ2x2+⋅⋅⋅+θnxny = \theta_0 + \theta_1x_1 + \theta_2x_2 + ··· + \theta_nx_ny=θ0+θ1x1+θ2x2+⋅⋅⋅+θnxn其中θ0对应的是一元线性回归中的那个b,我们...原创 2019-06-09 10:48:49 · 5481 阅读 · 2 评论 -
大家的人工智能——线性回归
在《大家的人工智能——学习路线总览》中,相信大家已经对人工智能领域已经有了一个初步的了解,现在我们从其中一个小方面入门机器学习,今天我们将要讲述的是机器学习中的一种线性模型——线性回归。什么是线性回归让我们把思绪先倒回到初中数学课堂上(如果你已经上过初中),来回顾一个知识点:一元一次方程,给出如下坐标点(1,1.5),(2,2),(3,2.5),要求计算出当x=4时,y的值。相信大家都会首...原创 2019-06-05 13:44:50 · 2352 阅读 · 0 评论 -
PyTorch风格迁移,人人都是名画大师
爱好绘画的小伙伴们有没有想过将各种名画的风格融入自己的绘画作品当中?如今借助深度学习技术,很容易就能将名画的风格迁移到任何一张画中。Neural Transfer网络接收三张图片作为输入,一张内容图像,一张风格图像,一张由内容图像初始化的图像(最终将风格迁移到这张图像上来)。损失函数这里将会有两个损失函数:与内容图像之间的损失与风格图像之间的损失内容损失这个损失比较简单,只是单...原创 2019-06-02 21:53:07 · 2154 阅读 · 0 评论 -
torchvision 0.3重大更新,支持图像分割目标检测
前几天听说torchvision 0.3发布了,它支持分割模型、检测模型。而由于工作原因,刚好在寻找一种比容易使用的图像分割工具,不需要复杂的图像处理步骤、配置、训练代码,所以自然而然试试torchvision 0.3的功能了。下面记录一下小编我使用torchvision 0.3训练图像分割目标检测模型的过程。首先当然是安装torchvision 0.3啦,目前0.3版本的还不支持Window...原创 2019-05-30 18:34:57 · 2950 阅读 · 23 评论 -
Kaggle座头鲸识别top5解决方案
比赛背景为帮助鲸鱼保护工作,科学家们使用照片监测系统来监测海洋活动。使用鲸鱼尾巴的形状和在录像中发现的独特标记来识别正在分析的鲸鱼的种类。在过去的40年中,大部分工作都是由个别科学家手工完成的,留下了大量的数据未开发未使用。因此Kaggle举办了这场比赛,提供了25000多张训练图片以及将近8000张测试图片,参赛选手需要编写算法,在测试图片中预测每张图片对应的最有可能的5个鲸鱼个体(每个鲸鱼个...原创 2019-05-29 19:53:21 · 2888 阅读 · 1 评论 -
大家的人工智能——学习路线总览
最近有读者向小编反馈,之前写的文章对初学者来说太难看懂了,确实如此,那些比较适合对人工智能有初步了解的人看,但是对于初学者而言,看起来难免会觉得云里雾里了。为此,小编专门咨询了几位打算入门的初学者,总结之后有这么几点:总览人工智能基础性概念逐步深入应用场景如何使用应“广大”读者需求,从最简单的为大家介绍关于人工智能的东西,目前还不会太深入细节。我把人工智能相关的东西总结成了上面这...原创 2019-05-28 21:45:19 · 458 阅读 · 0 评论 -
PyTorch模型保存与加载
torch.save:保存序列化的对象到磁盘,使用了Python的pickle进行序列化,模型、张量、所有对象的字典。torch.load:使用了pickle的unpacking将pickled的对象反序列化到内存中。torch.nn.Module.load_state_dict:使用反序列化的state_dict加载模型的参数字典。state_dict 是一个Python字典,将每一层...翻译 2019-05-28 14:58:10 · 43795 阅读 · 14 评论 -
Pytorch迁移学习
在实际应用中,很少有人从头开始训练整个卷积网络,因为很难获得足够多的数据。因此,常用的做法是使用在庞大数据集上训练好的模型作为预训练模型,用来初始化网络,或者提取特征。迁移学习的主要应用场景有以下两种:微调模型。使用预训练模型初始化网络特征提取。除最后一层全连接层之外,固定网络中其他层的权重,最后的全连接层权重随机初始化,这一层的参数会得到训练。导包from __future__ i...翻译 2019-05-25 11:16:01 · 1359 阅读 · 0 评论 -
PyTorch深度学习60分钟快速上手(四),训练分类器。
训练分类器现在我们已经知道如何定义网络结构,计算损失以及更新网络权重了,那么,如何准备数据?一般来说,处理图像、文本、语音或视频数据,我们可以直接使用Python的标准包将数据加载成numpy数组,然后将它转成torch.*Tensor。对于图片数据,可以使用Pillow,OpenCV;对于音频数据,可以使用scipy和librosa。对于文本数据,可以使用基于原生Python或Cy...翻译 2019-05-23 21:44:41 · 646 阅读 · 0 评论 -
PyTorch深度学习60分钟快速上手(三),神经网络。
神经网络使用torch.nn可以很方便地构建神经网络。到目前为止,我们已经对autograd有所了解,nn依靠autograd来定义模型,并求微分。nn.Module包含了许多网络层,forward(input)能返回输出结果output。下面是分类数字图片的网络结构图:这是一个非常简单的前向网络,将输入经过若干网络层的处理,最后得出结果。神经网络的典型训练过程有以下几点:定义网...翻译 2019-05-21 21:12:08 · 1078 阅读 · 0 评论 -
PyTorch深度学习60分钟快速上手(二),自动微分。
自动微分Pytorch中所有神经网络的核心是autograd包,我们先简单的来了解下这个包,然后来训练第一个神经网络。autograd包为tensor上所有操作提供了自动微分功能。Pytorch是一个先运行后定义(define-by-run)的网络框架,是一种动态网络图结构,因此代码如何运行决定了如何计算反向传播,并且每次迭代,反向传播都可能不同。张量(Tensor)torch.Tens...翻译 2019-05-20 13:49:09 · 551 阅读 · 0 评论 -
PyTorch深度学习60分钟快速上手(一),什么是PyTorch?
人工智能深度学习、机器学习 公众号:机器工匠学习目标:理解Pytorch 的 Tensor库,以及神经网络。训练一个简单的图像分类网络。假设已经了解numpy的基本用法,并确保已经安装好torch和torchvision。什么是PytorchPytorch是一个基于Python的科学计算包,用于以下两个目的:代替NumPy,使用GPU的加速能力。用于提供最大灵活性和速...原创 2019-05-18 23:08:19 · 642 阅读 · 0 评论 -
编译pycaffe SSD(python3.6,OpenCV3.4)
编译caffe(python3.6,OpenCV3.4)安装依赖包编译caffe首先要安装一大堆的依赖包:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install ...原创 2018-07-13 15:44:14 · 2835 阅读 · 0 评论 -
Mac OS X与Windows下TensorFlow的安装与升级
前几天得知TensorFlow 1.0版本发布了,又一个偶然的机会,知道了国内第一本关于TensorFlow的中文书籍——《TensorFlow实战》,所以买来打算跟着书本学习,这篇文章是为了记录我安装TensorFlow时遇到的问题。书中使用的TensorFlow版本是1.0.0,默认使用Python3.5作为Python基础版本。由于我之前Mac上安装过0.9版本的TensorFlow原创 2017-03-03 20:10:03 · 4642 阅读 · 2 评论 -
从几何角度切入最近邻
我们可以将预测任务看成是将一些输入映射成输出的过程。将输入分解成一系列特征集合,来形成对学习有用的抽象,因此,输入就是一系列特征值。我们从几何学的角度来看待这些数据,每一个特征是空间中的一个维度,因此每个数据点可以映射成高维空间中的点。把数据集看作是高维空间中的点之后,我们可以在这些点上进行几何运算。比如,假如你想预测同学A是否会喜欢算法这门课程,我们可以找一位与同学A相似的同学B,假如同学B喜欢算原创 2016-09-16 13:43:19 · 4880 阅读 · 0 评论 -
在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别
昨天我使用Spark MLlib的朴素贝叶斯进行手写数字识别,准确率在0.83左右,今天使用了RandomForest来训练模型,并进行了参数调优。首先来说说RandomForest 训练分类器时使用到的一些参数:numTrees:随机森林中树的数目。增大这个数值可以减小预测的方差,提高预测试验的准确性,训练时间会线性地随之增长。maxDepth:随机森林中每棵树的深度。增加这个值可以是模型更具原创 2016-05-12 20:36:43 · 14585 阅读 · 0 评论 -
在Kaggle手写数字数据集上使用Spark MLlib的朴素贝叶斯模型进行手写数字识别
昨天我在Kaggle上下载了一份用于手写数字识别的数据集,想通过最近学习到的一些方法来训练一个模型进行手写数字识别。这些数据集是从28×28像素大小的手写数字灰度图像中得来,其中训练数据第一个元素是具体的手写数字,剩下的784个元素是手写数字灰度图像每个像素的灰度值,范围为[0,255],测试数据则没有训练数据中的第一个元素,只包含784个灰度值。现在我打算使用Spark MLlib中提供的朴素贝叶原创 2016-05-11 22:40:40 · 10546 阅读 · 0 评论 -
多层网络和反向传播笔记
在我之前的博客中讲到了感知器(感知器),它是用于线性可分模式分类的最简单的神经网络模型,单个感知器只能表示线性的决策面,而反向传播算法所学习的多层网络能够表示种类繁多的非线性曲面。对于多层网络,如果使用线性单元的话,多个线性单元的连接仍然是线性函数,所以还不能表征非线性函数。使用感知器单元,但是它不连续所以也就不可微,不适合梯度下降算法。我们需要这么一种单元,它的输出是输入的非线性函数,而且输出是输原创 2016-04-17 21:25:28 · 10676 阅读 · 1 评论 -
决策树
决策树是应用最广的归纳推理算法之一,它是一种逼近离散函数方法,对噪声数据有很好的鲁棒性,能够学习析取表达式,广为应用的算法有ID3,ASSISTANT和C4.5。通常决策树代表实例属性值约束的合取(conjunction)的析取式(disjunction)。树根到树叶的每一条路径对应一组属性测试的合取,而整棵树是这些合取的析取。基本的ID3算法是通过自顶向下构造决策树进行学习的。首先考虑的问题是哪一原创 2016-04-09 21:02:48 · 8033 阅读 · 0 评论 -
最小二乘(Least Squares)
已经很久没有写博客了,今天决定写一篇关于最小二乘的博客,发表下自己的理解,有不足或错误之处,欢迎大家指正。最小二乘,又被叫做最小乘方or最小平方,它是一种优化技术。当给你一堆数据点,你可以想象成初中数学课堂上学习解析几何的时候,在坐标轴上给出一些点(通常这些点连起来是一条直线),然后要求算出这条直线的解析式(也就是拟合这些数据点),或计算斜率(可以理解成回归系数),然后要你算出当x等于多少时y的值之原创 2016-03-26 22:22:11 · 6166 阅读 · 0 评论 -
贝叶斯思维漫步
现在仍然记得大学最“无聊”的一堂课之一——概率论,出勤人数三个班加起来也没超过正常一个班的数量,当然最后一堂课除外(笑)。个人感觉上课也比较枯燥,当时完全不知道概率论可以用在什么方面,所有听课也就不是那么认真,结果就是期末考试只有70多分(想想当年高数90多线性代数也90······)。然而随着大学毕业,概率论也就离我远去,好像不会再有交集。后来开始“专研”机器学习方面的知识,“朴素贝叶斯”这个名词原创 2015-11-18 21:32:47 · 6315 阅读 · 2 评论 -
机器学习实战线性回归局部加权线性回归笔记
线性回归 用线性回归找到最佳拟合直线回归的目的是预测数值型数据,根据输入写出一个目标值的计算公式,这个公式就是回归方程(regression equation),变量前的系数(比如一元一次方程)称为回归系数(regression weights)。求这些回归系数的过程就是回归。假设输入数据存放在矩阵X X中,回归系数存放在向量w w中,那么对于数据X 1 X_1的预测结果可以用Y 1 =X T原创 2015-10-18 08:49:20 · 7894 阅读 · 3 评论 -
混沌,分形与人工智能
混沌这里所说的混沌并不是混乱之意,而是世间万物的一种属性。人们试图找到自然界事物发展的一定定律,然后用数学公式抽象出来,希望能预测将来事物发展轨迹,大部分时候可以奏效,但是极少时候也会出现问题,出现不可预测情况,比如气候骤变,股市突然暴跌。这些都体现了事物的混沌属性。混沌,是指在一个能被数学方程式精确描述的系统中,可以自发生成不可预测的现象,并且不需要任何外界的干预。有一种误解是,认为混沌就是一切事原创 2015-09-24 12:31:11 · 8691 阅读 · 5 评论 -
机器学习实战Logistic回归笔记
假设我们有一些数据点,我们使用一条直线对这些点进行拟合,这条线称为最佳拟合直线,这个拟合过程称为回归。利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。我们想要得到一个函数,能够接受所有的输入然后预测出类别。例如在两个类的情况下,函数输出0或1。该函数称为海维塞德阶跃函数(Heaviside step function),或者直接称为单位阶跃函数。但是原创 2015-09-04 22:54:54 · 5148 阅读 · 1 评论 -
智能Agent笔记
理性Agent:追求尽可能好的行为表现。Agent表现如何取决于环境的本质。Agent通过传感器感知环境并通过执行器对所处环境产生影响。Agent的感知序列是该Agent所收到的所有输入数据的完整历史。一般地,Agent在任何给定时刻的行动选择依赖于到那个时刻为止该Agent的整个感知序列,而不是那些它感知不到的东西。从数学角度看,我们可以说Agent函数描述了Agent的行为,它将任意给定感知序列原创 2015-08-16 20:31:49 · 4076 阅读 · 0 评论 -
Machine Learning With Spark学习笔记(在10万电影数据上训练、使用推荐模型)
我们现在开始训练模型,还输入参数如下: rank:ALS中因子的个数,通常来说越大越好,但是对内存占用率有直接影响,通常rank在10到200之间。 iterations:迭代次数,每次迭代都会减少ALS的重构误差。在几次迭代之后,ALS模型都会收敛得到一个不错的结果,所以大多情况下不需要太多的迭代(通常是10次)。 lambda:模型的正则化参数,控制着避免过度拟合,值越大,越正则化。我们将原创 2015-08-14 16:56:26 · 5029 阅读 · 5 评论 -
Machine Learning With Spark学习笔记(提取10万电影数据特征)
注:原文中的代码是在spark-shell中编写执行的,本人的是在eclipse中编写执行,所以结果输出形式可能会与这本书中的不太一样。首先将用户数据u.data读入SparkContext中,然后输出第一条数据看看效果,代码如下:val sc = new SparkContext("local", "ExtractFeatures")val rawData = sc.textFile("F:\\原创 2015-08-14 11:38:33 · 4205 阅读 · 0 评论 -
Machine Learning With Spark学习笔记
此笔记为本人在阅读Machine Learning With Spark的时候所做的,笔记有翻译不准确或错误的地方欢迎大家指正。Spark集群Spark集群由两种进程组成:一个驱动程序和多个执行程序。在本地模式下,所有的进程都在同一个Java虚拟机中运行。在集群上,这些进程则通常在多个节点上运行。比如,在单机环境下运行的集群有以下特征: 1、一个主节点作为spark单机模式的主进程和驱动程序。原创 2015-07-01 14:23:12 · 4488 阅读 · 1 评论 -
支持向量机笔记
支持向量机是一种通用的前馈网络类型。 主要思想: 给定训练样本,支持向量机建立一个超平面作为决策面,使得正例和反例之间的间隔边缘被最大化。原创 2015-06-03 21:05:59 · 3541 阅读 · 0 评论 -
神经网络与机器学习笔记——K-均值聚类
聚类是非监督学习的一种形式,它将一个观测集(即数据点)划分到自然组或模式聚类。聚类的途径是测量分配给每个聚类的观测对之间的相似性以最小化一个指定的代价函数。K-均值(K-means)简单易实现,同时具有良好的性能。聚类重新定义:给定N个观测值得集合,通过以下方式寻找编码器C:将这些观测值分配给K个聚类,使得在每个聚类中,给定的观测值与聚类均值的不相似性的平均度量最小。原创 2015-05-25 20:40:04 · 4795 阅读 · 0 评论 -
神经网络与机器学习导言笔记——反馈
一个元素的输出能够部分地影响作用于该元素的输入,从而造成一个或多个围绕该系统进行信号传输的封闭路径时,则动态系统中存在反馈(feedback)。原创 2015-04-21 21:01:57 · 3377 阅读 · 0 评论