-
深度学习算法
2019-03-19 10:08:02深度学习算法 https://www.cnblogs.com/sthu/p/8690723.html 1、线性回归 2、逻辑回归 3、决策树 4、SVM 5、朴素贝叶斯 6、K最近邻算法 7、K均值算法 8、随机森林算法 9、降维算法 10、Gradient Boost 和 Adaboost ...深度学习算法
https://www.cnblogs.com/sthu/p/8690723.html
1、线性回归
2、逻辑回归
3、决策树
4、SVM
5、朴素贝叶斯
6、K最近邻算法
7、K均值算法
8、随机森林算法
9、降维算法
10、Gradient Boost 和 Adaboost 算法
-
深度学习算法归类
2017-03-02 20:57:01深度学习算法监督式学习:
逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)
非监督式学习:
Apriori 算法以及k-Means 算法
半监督式学习:
图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)
强化学习:
Q-Learning 以及时间差学习(Temporal difference learning)
回归算法:
最小二乘法(Ordinary Least Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)
基于实例的算法:
k-Nearest Neighbor (KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM)
决策树学习:
分类及回归树(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection (CHAID), Decision Stump, 随机森林(Random Forest), 多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine, GBM)
贝叶斯方法:
朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators, AODE),以及 Bayesian Belief Network(BBN)
基于核的算法:
支持向量机(Support Vector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear Discriminate Analysis ,LDA)
聚类算法:
k-Means 算法以及期望最大化算法(Expectation Maximization, EM)
人工神经网络:
感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation), Hopfield 网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ)
深度学习:
受限波尔兹曼机(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷积网络(Convolutional Network), 堆栈式自动编码器(Stacked Auto-encoders)
降低维度算法:
主成份分析(Principle Component Analysis, PCA),偏最小二乘回归(Partial Least Square Regression,PLS), Sammon 映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(Projection Pursuit)
集成算法:
Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进机(Gradient Boosting Machine, GBM),随机森林(Random Forest) -
深度学习算法工程经验
2017-06-22 22:46:36本篇博文主要介绍深度学习算法的一些经验,主要参考Andrew NG的新书《Machine Learning Yearning》,目前出到第14章,基本上都是介绍深度学习在工程上的应用,全书没有数学公式,可以说是干货满满,非常值得一读!...本篇博文主要介绍深度学习算法的一些经验,主要参考Andrew NG的新书《Machine Learning Yearning》,目前出到第14章,基本上都是介绍深度学习在工程上的应用,全书没有数学公式,可以说是干货满满,非常值得一读!接下来我将结合自己的项目经历,以这本书为顺序介绍自己的心得体会。
链接(1~12章):
https://gallery.mailchimp.com/dc3a7ef4d750c0abfc19202a3/files/Machine_Learning_Yearning_V0.5_01.pdf
链接(第13章):
https://gallery.mailchimp.com/dc3a7ef4d750c0abfc19202a3/files/Machine_Learning_Yearning_V0.5_02.pdf
链接(第14章):
https://gallery.mailchimp.com/dc3a7ef4d750c0abfc19202a3/files/Machine_Learning_Yearning_V0.5_03.pdf一、Why Machine Learning Strategy
这一章主要是抛砖引玉,指出在你的深度学习模型遇到问题的时候,你需要选择合适的方法解决,那么一般都有哪些方法呢?作者列举了以下几个:
1、获取更多的数据。
2、增加训练样本的多样性。
3、增加迭代次数。
4、试试更深、更宽的网络,比如增加层数,卷积核个数,参数等等。
5、试试更小的网络。
6、加正则项,比如L2正则项。
7、改变你的网络结构,比如激活方式,卷积核个数等。个人感悟:增加训练样本的多样性可以这么理解:假如你要做猫狗分类,那么不同种类、不同姿势、睡觉的吃饭的等等的猫,各种各样都来一些,对提升你的算法效果是有帮助的。是否要增加迭代次数可以根据你的loss情况进行判断,当你的loss还没趋于平稳的时候,而且模型不太过拟合时,可以增加迭代次数。经验而言需要把你的全部数据跑几十遍才能达到不错的效果。更深的网络可以通过增加层数达到,比如像ResNet-152,当然原本简单增加层数的时候会遇到梯度衰减严重难以训练的情况,所以有了ResNet网络来解决这个问题。更宽的网络主要是通过增加某些层的卷积核的个数,一个卷积核相当于提取了一种特征,卷积核越多,特征越丰富,当然也增加了计算量。正则项一般是在过拟合的时候使用,简单讲就是限制权值的大小,L2是将权值的平方和加入到目标函数中,最后会使得权值趋于平滑,还有一种正则项是L1,可以使得权值趋于稀疏,即许多项为0。改变网络结构一般是比较细的调整,比如激活从ReLU改为pReLU,某层卷积核的大小的改变等等,一般小改的效果不会太明显。
二、How to use this book to help your team
这一章基本上没讲什么东西,略过。三、Prerequisites and Notation
这一章也没什么重要内容,就是说如果你对机器学习不是很了解,可以看看这个链接:http://ml-class.org四、Scale drives machine learning progress
其实深度学习(或者叫神经网络)在几十年前就有了,但是为什么现在才开始这么火?作者提到两个主要因素:
1、足够的数据
2、足够的计算能力
虽然现在数据有很多,但是传统的机器学习算法,比如逻辑回归,随着数据量的增加,其效果会遇到明显的瓶颈,此时如果采用不同深度的神经网络来训练,效果基本随着网络深度的增加而增加。如下图:为什么会这样?因为在小数据上,可以人工构造特征,一般而言在小数据集上构造的特征还是十分有效的,但是随着数据集的增加,人工构造特征会愈加困难。
现在,对于深度学习模型,最常用的提高算法表现能力的方式就是两种:用更大的网络和用更多的数据。
个人感悟:非常同意最后这句话,也是我在工程项目中模型调优的方向,一般而言,增加或调整你的数据以及修改你的网络结构对你最后的效果提升是非常明显的。至于调参,应该要放在最后一步,一方面因为调参非常耗费时间且需要经验和运气;另一方面因为只要几个重要的超参数(学习率,mini-batch size)的量级没有设置得太过离谱,一般而言模型都能取得不错的效果,而且调参的提升空间不会太大。
五、Your development and test sets
一般而言,在开展深度学习项目的时候,都会将数据分成三部分:训练集,验证集,测试集。你的模型在训练集上训练,然后用验证集来验证其效果,根据验证集的结果进行模型优化。作者强调你的测试集一定要和真实的数据有相同分布。个人感悟:有些人可能觉得直接分成训练集和测试集就行了,为什么还要加一个验证集。其实应该这么理解,验证集也是一个测试集,用来测试你的模型的泛化能力。而测试集一般是指线上的环境。一般而言我们拿到数据,可以分成训练集和验证集,要随机分,这样训练集和验证集才能有相似的分布,然后就在这两个数据集上不断训练和优化我们的模型。最后将模型应用到实际场景中,这实际场景其实就是我们的测试集,因为实际场景中数据一般会比我们之前收集的数据更多样,所以模型表现不如线下验证集是正常的,因为你一开始拿到的数据不可能十全十美,这时需要将这些数据再加到我们的训练集和验证集中,再训练和优化,直到迭代到下一个版本。如此不断重复。总之记住:训练集,验证集,测试集要尽可能具有相同分布。
六、Your dev and test sets should come from the same distribution
跟第五章类似,强调验证集和测试集要有相同的分布,否则你可能在验证集上训练出一个非常好的模型,但是在测试集上表现非常差。七、How large do the dev/test sets need to be?
这一章主要讲验证集和测试集需要多大比较合适?如果你的验证集只要100个样本,那么你的准确率提高的最小单位是1%,而不可能是0.1%,除非你的验证集增加到1000个样本。测试集样本也需要大到能足够表达你的模型效果才行,但是一般也不建议太大。个人感悟:我觉得对于验证集和测试集的划分没有硬性规定,一般我将数据集分成训练:验证=9:1。
八、Establish a single-number evalution metric for your team to optimize
主要是讲模型的评价标准。最好能用一个评价标准(比如准确率)来判断模型优劣,而不是用多个标准(比如precision和recall)。主要是因为多个标准不好比较算法的效果。比如这个图:其实如果要兼顾precision和recall,可以采用F1 score。
九、Optimizing and satisficing metrics
在权衡算法效果和速度的时候,除了可以用类似Accuracy-0.5*RunningTime的方式来比较,还可以采用其他方式,比如:假如可以接受的运行时间是100ms,那么就在这个限制条件下寻找准确率最高的算法。当然,如果你有多个限制条件,比如模型大小,运行时间,算法效果等,那可以在挨个满足条件的前提下找到最好的。还有一个例子是false positive rate和false negative rate,比如你希望在false positive rate为0的前提下降低你的false negative rate。十、Having a dev set and metric speeds up iterations
当你拿到一个问题的时候,你要思考这个问题要用什么样的方式解决,然后把这个方式用代码表达出来,最后根据实验结果去思考之前的解决方式是否还有改进的地方,不断迭代。作者给出的这个图非常形象十一、When to change dev/test sets and metrics
作者提到在开始一个项目的时候,最好在一周内就能定义出验证集和测试集以及评价标准,而不是花太长的时间去制定和思考。后期当你发现你之前定义的验证集和测试集存在缺陷的时候,就应该尽快修改。这里有三个需要注意的点,如果你有这三种情况,那么就需要修改你的验证集了。
1、实际的数据分布和你验证集的数据分布不同。
2、在验证集上过拟合了。
3、你的评价标准和模型的优化方向不一致。比如你的一个图像分类算法,模型A的准确率比模型B的准确要高,但是有时候模型A容易漏判一些特殊图像,这是不能容忍的,而模型B不会,因此准确讲模型B的效果要比模型A要好。怎么改进呢?可以通过对漏判一些特殊图像做惩罚,而不仅仅用准确率来表征模型优劣。十二、Takeaways: Setting up development and test sets
1、你的验证集和测试集要尽可能从你实际应用场景的数据中获取。验证集和测试集不一定要跟你的训练数据有相同分布。(这点我认为最好还是训练集和验证集有相似的分布,如果训练数据和验证数据分布太大,你可能训练多次都难以得到好的效果,)未完,待补充
-
ML/DL:关于机器学习、深度学习算法模型的选择
2018-08-16 11:36:36 -
深度学习算法简介
2016-04-29 23:56:55Introduction to Deep ...See the following article for a recent survey of deep learning(下面的文章是近来深度学习算法的调研): Yoshua Bengio, Learning Deep Architectures for AI, Foundations and Tr -
深度学习算法(第6期)----深度学习之学习率的命运
2019-06-15 21:55:46欢迎关注微信公众号“智能算法” – 原文链接(阅读体验更佳):深度学习算法(第6期)----深度学习之学习率的命运 上一期,我们一起学习了深度学习中的优化器的进化, 深度学习算法(第5期)----深度学习中的优化器... -
人脸检测技术——深度学习算法原理
2019-05-04 18:44:57人脸检测技术——深度学习算法原理人脸检测技术——深度学习算法原理1. 通用目标检测网络1.1 faster-rcnn检测算法的基本原理1.2 faster-rcnn应用于人脸检测2. 专门应用于人脸检测的卷积神经网络2.1 专门用于人脸检测... -
人工智能,机器学习,深度学习算法,深度学习遥感分类研究者
2018-03-27 16:35:25本人最近专门研究深度学习算法就遥感影像分类研究和智能识别,有同行或者新手们可以一起学习,互相交流。安利一个微博:大数据与人工智能CCNU上面有不少你需要的东西。作为深度学习算法入门和关注AI动态。大家可以... -
利用高性能计算加速深度学习算法
2018-02-07 16:09:421. 深度学习 深度学习是机器学习研究中的一个新...(由于本人不是深度学习专业人士,对深度学习理论知识不多介绍,说多了就班门弄斧了,后面主要介绍下这些深度学习算法如何进行并行化设计和优化) 2. CPU+GP -
深度学习算法的几个难点
2017-05-04 15:34:49深度学习算法的几个难点 -
用深度学习算法预测未来股票走势
2020-03-02 10:53:06最近研究了一下用深度学习算法来预测股票未来的走势,看了网上不少别人分享的案例,也实际进行了测试,感觉用 LSTM 算法比较适用。长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了... -
腾讯云FPGA的深度学习算法
2018-04-09 20:39:50由腾讯云基础产品中心、腾讯架构平台部组成的腾讯云FPGA联合团队,在这里介绍国内首款FPGA云服务器的工程实现深度学习算法(AlexNet),讨论深度学习算法FPGA硬件加速平台的架构。首先介绍一下背景:腾讯云推出... -
深度学习算法实验平台网站的设计与实现
2019-07-17 23:12:32本文课题构建一个深度学习算法实验平台,是为颈动脉医疗图像深度学习识别斑块提供服务的。制作一个集成的深度学习工具包,颈动脉医疗图像的深度学习代码都可以在本平台上运行,平台基于TensorFlow、Caffe、CNTK、... -
深度学习算法工程师笔试题(百度)
2017-01-16 09:57:44百度2013深度学习算法工程师笔试题。 -
基于web端的深度学习算法应用
2020-03-30 23:06:261.掌握深度学习图像处理(基于keras、tensorflow、opencv) 2.掌握web前后端设计(基 于flask框架) 3.开发基于web端的深度学习图像,把web端应用与人工智能相结合 代码路径:... -
深度学习算法中卷积神经网络的应用
2019-02-26 20:07:14下面一起来探讨一下关于深度学习算法中卷积神经网络的基本概念和应用: 1、卷积神经网络基本概念 卷积神经网络也是在传统人工神经网络的基础上发展起来的,它与 BP 神经网络有很大的相似之处,但也有很大的区别 ;... -
每周荐书:分布式、深度学习算法、iOS(评论送书)
2017-08-10 15:37:58每周荐书:分布式、深度学习算法、iOS(评论送书)感谢大家对每周荐书栏目的支持,先公布下上周中奖名单 steveygtiny_cellKotlin实战 daMao2 AresCarry架构探险:从零开始写分布式服务框架 FZU_rxd liuhmmjjKeras... -
OCR文字识别:深度学习算法识别步骤
2019-10-22 15:41:15之前没有接触过OCR文字识别,本文主要对使用深度学习算法完成文字识别的整体步骤进行一下梳理。 一般来说,OCR文字识别是检测+识别,首先将可能在文字的区域检测出来,然后在进行识别。本质是识别图片中的文字,即... -
深度学习算法效果提升-网络结构
2018-11-03 21:52:01优化深度学习算法的效果可以从三个方面入手,数据+网络结构+损失函数。一般来说,外行改网络结构,内行改损失函数,公司层面收集数据。 在一般情况下,特别是手机端应用,直接拿个成熟的小网络进行迁移学习... -
走心整理——十个常用深度学习算法
2018-12-13 09:25:00)柳猫一直没有更新自己的手记,现在,就让柳猫来讲讲十个常用的深度学习算法。 过去十年里,人们对机器学习的兴趣经历了爆炸式的整长。我们几乎每天都可以在计算机程序、行业会议和媒体上看到机器学习的身影。很多... -
AI必知的十大深度学习算法
2018-03-17 15:24:53首先先让我们来定义一下什么是“深度学习”。对很多人来说,给“深度学习”下一个定义确实很有挑战,因为在过去的十年中,它的形式已经慢慢地发生了很大的变化。先来在视觉上感受一下“深度学习”的地位。下图是AI、... -
深度学习算法实践6---逻辑回归算法应用
2016-08-11 14:45:50在上篇博文中,我们介绍了深度学习算法的实现,并且以MNIST手写数字识别为例,验证了该算法的有效性。但是我们学习逻辑回归算法的目的是解决我们的实际问题,而不是学习算法本身。逻辑回归算法在实际中的应用还是很... -
【记录】一个深度学习算法工程师的成长之路(思考和方法以及计划)
2019-09-18 21:39:34尤其是在就业一年比一年难的情况下,经历过好多次心态崩裂,也问过很多人,来总结一下如果想成为一个【深度学习 CV 算法工程师】需要什么学习能力和知识储备。 这个文章应该会是一个【记录】的文章,看看自己这一路... -
400页《TensorFlow 2.0 深度学习算法实战》中文版分享(附代码)
2020-11-10 10:33:15今天分享一下今年11 月份刚刚出炉的《TensorFlow 2.0 深度学习算法实战》中文版,分享给有需要的小伙伴。 Tensorflow自谷歌提出以来,就成为最受欢迎的深度学习框架之一,迄今已经被下载超过 4000 万次。其中... -
DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优
2020-03-13 09:54:52DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优 目录 基于keras对LSTM算法进行超参数调优 1、可视化LSTM模型的loss和acc曲线 2、可视化LSTM模型来判断拟合 2.1、判断过拟合—训练集很好、... -
机器学习&深度学习算法及代码实现
2017-04-05 20:38:50最近在学机器学习,学习过程中收获颇多,在此留下学习记录,希望与同道中人相互学习交流机器学习简介1、机器学习运用学习算法,利用所给的数据进训练,生成相应的模型。在面对新情况时,根据模型,给出正确的判断。2... -
【深度学习】深度学习之道:如何选择深度学习算法架构
2017-11-09 00:00:00Hinton的胶囊(Capsule)论文在2017年10月26号发表后深度学习架构似乎又有个新的变革。 到底一些传统的深度学习架构是否仍然有用?怎么用?这是不少深度学习科学家们不断在思索的问题, 也是不少接地气的科技产业化...
-
图像的tile边界条件
-
C/C++编程全家桶(Daozy极限编程)
-
单片机外中断实验报告.docx
-
2021全网最详细【WEB前端】从零入门实战教程,全课程119节
-
colorc.exe(控制台控制部分字符输出颜色的小程序)
-
Django企业开发实战对应项目代码
-
typescript 文档阅读笔记 Decorators
-
【数据分析-随到随学】Python语法强化与数据处理
-
深度强化学习核心技术研修
-
数据结构复习
-
c++ &继承和多态(三)
-
24. 两两交换链表中的节点
-
Redis(一)概述
-
图像的移位反射边界条件
-
Python+Django+Mysql的多app后端开发入门
-
【数据分析-随到随学】数据分析基础及方法论
-
【数据分析-随到随学】Hive详解
-
【2021】UI自动化测试Selenium3
-
Java线程池理解
-
前端架构师-速成