- 博客(75)
- 收藏
- 关注
原创 强化学习形式与关系
在强化学习中有这么几个术语:智能体(Agent),环境(Environment),动作(Action),奖励(Reward),状态(State,有些地方称作观察,Observation)。
2021-02-22 16:38:21
405
原创 初识强化学习,什么是强化学习?
相信很多人都听过“机器学习”和“深度学习”,但是听过“强化学习”的人可能没有那么多,那么,什么是强化学习呢?强化学习是机器学习的一个子领域,它可以随着时间的推移自动学习到最优的策略。在我们不断变化的纷繁复杂的世界里,从更广的角度来看,即使是单纯的静态的输入-输出型问题也会变成动态的问题。例如,对于一个简单的监督式学习任务——猫狗分类。你收集到了一些训练数据,然后用你最喜欢的深度学习框架写了一个分类网络进行训练,很快模型收敛,效果拔群,因此你将这个模型部署上线,过了一段时间一些狗的狗毛修剪方式发生了改变,
2021-02-20 15:35:15
474
原创 软件架构概念和面向服务的架构
摘要软件架构作为软件开发过程的一个重要组成部分,有着各种各样的方法和路线图,它们都有一些共同的原则。基于架构的方法作为控制系统构建和演化复杂性的一种手段得到了推广。引言在计算机历史中,软件变得越来越复杂。也提出了许多方法来解决不同层次的复杂性,例如“结构化编程”[1],以及Fred Brooks的“概念完整性”思想[2]。软件生命周期的设计阶段通常分为高层设计和详细设计。架构将有助于描述软件,这就产生了“软件架构”一词。软件架构的概念已经成为解决高度复杂问题的设计方案。在1994年底,Denning和
2021-01-26 11:07:58
724
1
原创 强化学习-马尔可夫决策过程(MDP)
强化学习,是机器学习领域中,除监督学习、非监督学习之外,第三种学习范式。在强化学习中,智能体在环境中通过执行各种动作来与之交互,做完每个动作后都会得到一个环境反馈的奖励值,智能体的目标就是通过一系列的交互,来学习到一种策略,使得它收到的总奖励值最大。马尔可夫马尔科夫性:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的过..
2021-01-14 11:15:20
838
2
原创 我的2020奋斗史
现在我仍然记得,去年的这个时候,我结束3个月的考研备考,刚刚参加完全国统考,难得可以休息一段时间了。我于2014年本科毕业,到目前为止已经有6年工作经验,前三年从事大数据开发,后三年转做计算机视觉。那么,已经工作这么多年了,为什么还要考研呢?事情的开端要回到2019年9月份,当时已经从事计算机视觉方面的工作有近两年的时间,而加上加薪无望,因此开始琢磨着找新工作了。在此过程中,我发现这么一个现象,大部分岗位要求有硕士学历,甚至有些是强制要求,因此对于只有本科学历的我,在简历这关就被淘汰了,与此同时,各大招聘
2021-01-01 18:19:08
256
3
原创 我的2019“木桶插曲”——三个月考上研
我是如何在找工作的途中花不到三个月的时间考上研的。“兄弟,你这学历找算法岗很吃亏啊!”“不好意思,需要硕士学历。”“这个岗位还要求是研究生呢”(你本科生就这个价钱)。这是我2019年求职过程中印象最深的三句话,虽然远远小于boss上已沟通的数目,虽然是少数情况,但已足够引起人的重视,因此决定要做些什么来改变现状。突如其来的想法时间回到2019年9月24日早晨,那天早上起来,突然有某种东西在内心爆炸式的展开,就像大学时候某天早晨突然对自己说,我要学吉他一样。这天早晨,产生了要考在职研究生的冲动.
2020-05-27 10:44:08
1106
4
原创 平方误差损失与交叉熵损失
平方误差和交叉熵是神经网络中很常用的损失函数,那么平方误差和交叉熵分别适合什么场景呢?这个问题也是算法工程师面试中的高频考点,其中不乏腾讯微信。那么在本文中,就来详细解释这两种损失函数。平方误差这里以一个简单的神经元为例,只有一个输入和一个输出:接下来我们使用平方误差损失来训练这个神经元,接受输入1.0,目标输出0.0。首先将权重初始化为0.6,偏置0.9,学习率为0.15,我们来看看损失...
2020-04-13 17:15:56
2379
原创 SVM
支持向量机(Support Vector Machine,SVM)是众多监督学习方法中十分出色的一种,几乎所有讲述经典机器学习方法的教材都会介绍,下面总结一下关于SVM的知识点。常见的几何性质原始公式的导出SVM的性质对偶形式推导KKT条件SMO算法...
2020-01-16 21:34:36
401
2
原创 kaggle气胸疾病图像分割top5解决方案
比赛背景突然喘气,无缘无故地无助地呼吸,这会是肺衰竭吗?气胸可由胸部钝伤、肺部疾病的损害引起,有时候甚至无法探寻诱因。在某些情况下,肺萎陷可能会危及生命。气胸通常由胸部X射线放射科医生诊断,但有时很难确诊。因此由医学影像信息学学会(SIIM)提供了气胸图片数据,kaggle举办了一场比赛,开发模型,为非放射科医生提供更可靠的诊断,并在疾病早期识别气胸,挽救生命。数据图片数据是胸透图片,并标注...
2019-09-22 11:17:27
2277
原创 kaggle糖尿病视网膜病变失明检测top5解决方案
比赛背景想象一下,在失明发生之前就能够发现病变。数以百万计的人患有糖尿病性视网膜病变,这是导致老年人失明的主要原因。印度的Aravind眼科医院希望在农村地区的人们中发现并预防这种疾病,而那里的医疗筛查很难进行。目前,Aravind技术人员前往这些农村地区拍摄图像,然后依靠训练有素的医生对图像进行检查并提供诊断。因此kaggle举办了场比赛来加快疾病筛查。(本人排名:top6%,162/2987...
2019-09-12 09:31:53
5222
10
原创 手推DNN,CNN池化层,卷积层反向传播
反向传播算法是神经网络中用来学习的算法,从网络的输出一直往输出方向计算梯度来更新网络参数,达到学习的目的,而因为其传播方向与网络的推理方向相反,因此成为反向传播。神经网络有很多种,那么它们还有其中包含的一些结构,是如何计算出梯度来的呢,在这里为大家手动推导DNN,池化层,卷积层的求导过程。DNN反向传播DNN的反向传播推导相对来说比较简单,那么在卷积网络中如何反向传播呢,特别是在池化层和卷积...
2019-08-24 12:10:34
1538
2
原创 深度学习问答
Q:数据拆分时为什么最好拆分成训练集、验证集、测试集,而不是训练集和测试集?A:因为在开发模型的时候总是需要调节模型超参数,比如层数或层的大小。在调节超参数的过程中会将模型在验证数据上进行测试,这个调节过程本身也是一种学习,如果基于模型在验证集上的性能来调节超参数,会很快导致模型在验证集上过拟合,即使没有在验证集上训练。这是因为每次基于在验证集上的性能来调节超参数的时候,关于验证集的一些信息会泄...
2019-07-27 18:46:27
347
原创 初识Keras
什么是KerasKeras是一个深度学习框架,与PyTorch不同的是,Keras提供高层次的模型构建模块,不处理张量操作,求微分等逻辑。而PyTorch中用户可以自己定义网络前向和反向传播的逻辑。而这些底层的操作,Keras则依赖其他后端来实现,在Keras中可以选择TensorFlow或Theano作为后端。而Theano现在已经停止维护了,所以还是用TensorFlow作为计算后端,这也是...
2019-07-25 21:39:23
431
原创 大家的人工智能——决策树
在Logistic回归中,我们接触到了分类任务,今天我们将要介绍的是决策树,它是一种用于分类与回归的算法,这里主要讨论用于分类的决策树。决策树初探从名字中就不难猜出决策树模型是呈树形结构,在分类问题中,基于特征对实例进行分类,我们可以想象有一系列的if-else规则集合,通过判断特征是否符合这些规则来对实例进行分类。决策树结构决策树是一种对实例进行分类的树形结构,它由结点和有向边组成。而结...
2019-06-30 16:28:49
5850
原创 目标检测第二弹——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
548
原创 大家的人工智能——Logistic回归
在《大家的人工智能——线性回归》中,什么是拟合,代价函数,梯度下降,相信大家已经对这些基本概念有所了解。线性回归的应用场景是输出为连续的数值,比如下个月的房价多少,明天的气温多少。而在机器学习中还有一类任务,它的输出是离散的,比如明天他会不会去游泳(会或不会),这是狗还是猫,这就是分类任务,而Logistic回归就是处理这种分类任务的,不要看他的名字里面有“回归”两个字,但是它其实是个分类算法。它...
2019-06-20 21:35:17
537
原创 目标检测第一弹——RCNN,SPP
R-CNN使用大容量卷积神经网络(CNN)自下而上生成候选区域(region proposals),以便定位和分割对象。标记训练数据稀缺,使用监督式预训练,基于特定领域的微调模型进行辅助,性能显著提升。R-CNN系统综述输入一张图像自下而上提取出大约2000个候选区域,对每个候选区域,首先将框稍微扩张使其包括部分上下文信息,然后将扩张后的图像resize到227 × 227(CN...
2019-06-16 20:51:48
627
原创 大家的人工智能——正规方程
在《大家的人工智能——线性回归》中,我们介绍了如何找到一条直线来拟合训练数据,下面把之前的一元线性回归扩展到多元线性回归: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
5471
2
原创 大家的人工智能——线性回归
在《大家的人工智能——学习路线总览》中,相信大家已经对人工智能领域已经有了一个初步的了解,现在我们从其中一个小方面入门机器学习,今天我们将要讲述的是机器学习中的一种线性模型——线性回归。什么是线性回归让我们把思绪先倒回到初中数学课堂上(如果你已经上过初中),来回顾一个知识点:一元一次方程,给出如下坐标点(1,1.5),(2,2),(3,2.5),要求计算出当x=4时,y的值。相信大家都会首...
2019-06-05 13:44:50
2341
原创 PyTorch风格迁移,人人都是名画大师
爱好绘画的小伙伴们有没有想过将各种名画的风格融入自己的绘画作品当中?如今借助深度学习技术,很容易就能将名画的风格迁移到任何一张画中。Neural Transfer网络接收三张图片作为输入,一张内容图像,一张风格图像,一张由内容图像初始化的图像(最终将风格迁移到这张图像上来)。损失函数这里将会有两个损失函数:与内容图像之间的损失与风格图像之间的损失内容损失这个损失比较简单,只是单...
2019-06-02 21:53:07
2147
原创 torchvision 0.3重大更新,支持图像分割目标检测
前几天听说torchvision 0.3发布了,它支持分割模型、检测模型。而由于工作原因,刚好在寻找一种比容易使用的图像分割工具,不需要复杂的图像处理步骤、配置、训练代码,所以自然而然试试torchvision 0.3的功能了。下面记录一下小编我使用torchvision 0.3训练图像分割目标检测模型的过程。首先当然是安装torchvision 0.3啦,目前0.3版本的还不支持Window...
2019-05-30 18:34:57
2941
23
原创 Kaggle座头鲸识别top5解决方案
比赛背景为帮助鲸鱼保护工作,科学家们使用照片监测系统来监测海洋活动。使用鲸鱼尾巴的形状和在录像中发现的独特标记来识别正在分析的鲸鱼的种类。在过去的40年中,大部分工作都是由个别科学家手工完成的,留下了大量的数据未开发未使用。因此Kaggle举办了这场比赛,提供了25000多张训练图片以及将近8000张测试图片,参赛选手需要编写算法,在测试图片中预测每张图片对应的最有可能的5个鲸鱼个体(每个鲸鱼个...
2019-05-29 19:53:21
2861
1
原创 大家的人工智能——学习路线总览
最近有读者向小编反馈,之前写的文章对初学者来说太难看懂了,确实如此,那些比较适合对人工智能有初步了解的人看,但是对于初学者而言,看起来难免会觉得云里雾里了。为此,小编专门咨询了几位打算入门的初学者,总结之后有这么几点:总览人工智能基础性概念逐步深入应用场景如何使用应“广大”读者需求,从最简单的为大家介绍关于人工智能的东西,目前还不会太深入细节。我把人工智能相关的东西总结成了上面这...
2019-05-28 21:45:19
455
翻译 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
43682
14
翻译 Pytorch迁移学习
在实际应用中,很少有人从头开始训练整个卷积网络,因为很难获得足够多的数据。因此,常用的做法是使用在庞大数据集上训练好的模型作为预训练模型,用来初始化网络,或者提取特征。迁移学习的主要应用场景有以下两种:微调模型。使用预训练模型初始化网络特征提取。除最后一层全连接层之外,固定网络中其他层的权重,最后的全连接层权重随机初始化,这一层的参数会得到训练。导包from __future__ i...
2019-05-25 11:16:01
1352
翻译 PyTorch深度学习60分钟快速上手(四),训练分类器。
训练分类器现在我们已经知道如何定义网络结构,计算损失以及更新网络权重了,那么,如何准备数据?一般来说,处理图像、文本、语音或视频数据,我们可以直接使用Python的标准包将数据加载成numpy数组,然后将它转成torch.*Tensor。对于图片数据,可以使用Pillow,OpenCV;对于音频数据,可以使用scipy和librosa。对于文本数据,可以使用基于原生Python或Cy...
2019-05-23 21:44:41
639
翻译 PyTorch深度学习60分钟快速上手(三),神经网络。
神经网络使用torch.nn可以很方便地构建神经网络。到目前为止,我们已经对autograd有所了解,nn依靠autograd来定义模型,并求微分。nn.Module包含了许多网络层,forward(input)能返回输出结果output。下面是分类数字图片的网络结构图:这是一个非常简单的前向网络,将输入经过若干网络层的处理,最后得出结果。神经网络的典型训练过程有以下几点:定义网...
2019-05-21 21:12:08
1071
翻译 PyTorch深度学习60分钟快速上手(二),自动微分。
自动微分Pytorch中所有神经网络的核心是autograd包,我们先简单的来了解下这个包,然后来训练第一个神经网络。autograd包为tensor上所有操作提供了自动微分功能。Pytorch是一个先运行后定义(define-by-run)的网络框架,是一种动态网络图结构,因此代码如何运行决定了如何计算反向传播,并且每次迭代,反向传播都可能不同。张量(Tensor)torch.Tens...
2019-05-20 13:49:09
547
原创 PyTorch深度学习60分钟快速上手(一),什么是PyTorch?
人工智能深度学习、机器学习 公众号:机器工匠学习目标:理解Pytorch 的 Tensor库,以及神经网络。训练一个简单的图像分类网络。假设已经了解numpy的基本用法,并确保已经安装好torch和torchvision。什么是PytorchPytorch是一个基于Python的科学计算包,用于以下两个目的:代替NumPy,使用GPU的加速能力。用于提供最大灵活性和速...
2019-05-18 23:08:19
632
原创 编译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
2831
原创 遇见AI,从Java到数据挖掘。
在上小学的时候就听说过AI,人工智能,那个时候我对人工智能的感受都来自于各类影视作品,类人的外表,能听说读写,有情感,会思考。所以那个时候的我将人工智能想象成和人类相似的一样东西,对人工智能的理解也仅此而已,总是好奇人工智能是如何发明出来的,没有一点头绪,甚至在那个时候,我都不知道遥控器为什么能够控制玩具赛车行驶,电脑上的软件,浏览器观看的网页是怎么被人“发明”出来的。这些用手摸不着只能靠想象的东西
2017-07-21 22:31:43
9097
19
原创 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
4635
2
原创 从几何角度切入最近邻
我们可以将预测任务看成是将一些输入映射成输出的过程。将输入分解成一系列特征集合,来形成对学习有用的抽象,因此,输入就是一系列特征值。我们从几何学的角度来看待这些数据,每一个特征是空间中的一个维度,因此每个数据点可以映射成高维空间中的点。把数据集看作是高维空间中的点之后,我们可以在这些点上进行几何运算。比如,假如你想预测同学A是否会喜欢算法这门课程,我们可以找一位与同学A相似的同学B,假如同学B喜欢算
2016-09-16 13:43:19
4875
原创 在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别
昨天我使用Spark MLlib的朴素贝叶斯进行手写数字识别,准确率在0.83左右,今天使用了RandomForest来训练模型,并进行了参数调优。首先来说说RandomForest 训练分类器时使用到的一些参数:numTrees:随机森林中树的数目。增大这个数值可以减小预测的方差,提高预测试验的准确性,训练时间会线性地随之增长。maxDepth:随机森林中每棵树的深度。增加这个值可以是模型更具
2016-05-12 20:36:43
14579
原创 在Kaggle手写数字数据集上使用Spark MLlib的朴素贝叶斯模型进行手写数字识别
昨天我在Kaggle上下载了一份用于手写数字识别的数据集,想通过最近学习到的一些方法来训练一个模型进行手写数字识别。这些数据集是从28×28像素大小的手写数字灰度图像中得来,其中训练数据第一个元素是具体的手写数字,剩下的784个元素是手写数字灰度图像每个像素的灰度值,范围为[0,255],测试数据则没有训练数据中的第一个元素,只包含784个灰度值。现在我打算使用Spark MLlib中提供的朴素贝叶
2016-05-11 22:40:40
10540
原创 多层网络和反向传播笔记
在我之前的博客中讲到了感知器(感知器),它是用于线性可分模式分类的最简单的神经网络模型,单个感知器只能表示线性的决策面,而反向传播算法所学习的多层网络能够表示种类繁多的非线性曲面。对于多层网络,如果使用线性单元的话,多个线性单元的连接仍然是线性函数,所以还不能表征非线性函数。使用感知器单元,但是它不连续所以也就不可微,不适合梯度下降算法。我们需要这么一种单元,它的输出是输入的非线性函数,而且输出是输
2016-04-17 21:25:28
10669
1
原创 决策树
决策树是应用最广的归纳推理算法之一,它是一种逼近离散函数方法,对噪声数据有很好的鲁棒性,能够学习析取表达式,广为应用的算法有ID3,ASSISTANT和C4.5。通常决策树代表实例属性值约束的合取(conjunction)的析取式(disjunction)。树根到树叶的每一条路径对应一组属性测试的合取,而整棵树是这些合取的析取。基本的ID3算法是通过自顶向下构造决策树进行学习的。首先考虑的问题是哪一
2016-04-09 21:02:48
8029
原创 最小二乘(Least Squares)
已经很久没有写博客了,今天决定写一篇关于最小二乘的博客,发表下自己的理解,有不足或错误之处,欢迎大家指正。最小二乘,又被叫做最小乘方or最小平方,它是一种优化技术。当给你一堆数据点,你可以想象成初中数学课堂上学习解析几何的时候,在坐标轴上给出一些点(通常这些点连起来是一条直线),然后要求算出这条直线的解析式(也就是拟合这些数据点),或计算斜率(可以理解成回归系数),然后要你算出当x等于多少时y的值之
2016-03-26 22:22:11
6153
原创 贝叶斯思维漫步
现在仍然记得大学最“无聊”的一堂课之一——概率论,出勤人数三个班加起来也没超过正常一个班的数量,当然最后一堂课除外(笑)。个人感觉上课也比较枯燥,当时完全不知道概率论可以用在什么方面,所有听课也就不是那么认真,结果就是期末考试只有70多分(想想当年高数90多线性代数也90······)。然而随着大学毕业,概率论也就离我远去,好像不会再有交集。后来开始“专研”机器学习方面的知识,“朴素贝叶斯”这个名词
2015-11-18 21:32:47
6309
2
原创 机器学习实战线性回归局部加权线性回归笔记
线性回归 用线性回归找到最佳拟合直线回归的目的是预测数值型数据,根据输入写出一个目标值的计算公式,这个公式就是回归方程(regression equation),变量前的系数(比如一元一次方程)称为回归系数(regression weights)。求这些回归系数的过程就是回归。假设输入数据存放在矩阵X X中,回归系数存放在向量w w中,那么对于数据X 1 X_1的预测结果可以用Y 1 =X T
2015-10-18 08:49:20
7891
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人