深度学习在过去几年,由于卷积神经网络的特征提取能力让这个算法又火了一下,其实在很多年以前早就有所出现,但是由于深度学习的计算复杂度问题,一直没有被广泛应用。

一般的,卷积层的计算形式为:

其中、x分别表示当前卷积层中第j个特征、前一层的第i个特征;k表示当前层的第j个特征与前一层的第i个特征之间的卷积核;M表示需要卷积的前一层的特征的集合,b表示当前卷积层中第j个卷积核对应的偏置。f为激活函数。

卷积层中的权值与阈值通过随机梯度下降法得到:

式中,a为学习率。

损失函数对卷积层参数的梯度可通过链式求导来得到,如下:

式中,表示前一层的梯度。

卷积神经网络中的激活函数有多种形式:

式中a为固定的参数。

式中,每个batch训练样本中的都随机采样自均值分布,在测试中取

从上述卷积神经网络看出,学习过程中需要进行梯度迭代,真正在实现工业检测等实际应用时时间复杂度极高,因此学术界进行了优化,优化后的一种单层神经网络极限学习机解决了此问题,在过去应用十分广泛。

为解决上述问题,出现了极限学习机。

用最小二乘法解决的一种特殊结果为,等价为一种矩阵求逆的形式

为的Moore-Penrose广义逆。

1)由于极限学习机求取权值的时候只是计算一个广义逆,因此训练速度比基于梯度的学习算法快很多;

2)基于梯度的学习算法存在很多问题,比如学习速率难以确定、局部网络最小化等,极限学习机有效的改善了此类问题,在分类过程中取得了更好的效果;

3)与其他神经网络算法不同,极限学习机在训练过程中,选择激活函数过程中可以选择不可微函数。;

4)极限学习机算法训练过程并不复杂。极限学习机只需要三步就可以完成整个的学习过程。

以下用R代码讲解一下极限学习机

###训练过程如下:

训练过程4步即可。

elmtrain.default <-function(x,y,nhid,actfun,...) {  require(MASS)

if(nhid < 1) stop("ERROR: number of hidden neurons must be >= 1")########1.选择数据,X与Y  T <- t(y) P <- t(x)########2.随机产生权值,目的在于将X值进行变化 

 inpweight <- randomMatrix(nrow(P),nhid,-1,1) tempH <- inpweight %*% P biashid <- runif(nhid,min=-1,max=1) biasMatrix <- matrix(rep(biashid, ncol(P)), nrow=nhid, ncol=ncol(P), byrow = F) 

 tempH = tempH + biasMatrix########3.将变化后的X值进行高维映射,最常用是sig函数 if(actfun == "sig") H = 1 / (1 + exp(-1*tempH))else {if(actfun == "sin") H = sin(tempH)else {if(actfun == "radbas") H = exp(-1*(tempH^2))else {if(actfun == "hardlim") H = hardlim(tempH)else {if(actfun == "hardlims") H = hardlims(tempH)else {if(actfun == "satlins") H = satlins(tempH)else {if(actfun == "tansig") H = 2/(1+exp(-2*tempH))-1else {if(actfun == "tribas") H = tribas(tempH)else {if(actfun == "poslin") H = poslin(tempH)else {if(actfun == "purelin") H = tempHelse stop(paste("ERROR: ",actfun," is not a valid activation function.",sep="")) } } } } } } } } }

########4.拟合出模型系数,即Y=AX中的A  outweight <- ginv(t(H), tol = sqrt(.Machine$double.eps)) %*% t(T) Y <- t(t(H) %*% outweight) model = list(inpweight=inpweight,biashid=biashid,outweight=outweight,actfun=actfun,nhid=nhid,predictions=t(Y)) model$fitted.values <- t(Y) model$residuals <- y - model$fitted.values model$call <- match.call()class(model) <- "elmNN" model}

测试过程,过程4步即可。

function (object, newdata = NULL, ...) {if (is.null(newdata))     predictions <- fitted(object)else {if (!is.null(object$formula)) {      x <- model.matrix(object$formula, newdata)    }else { x <- newdata }

########1.获取训练模型中的参数 inpweight <- object$inpweight biashid <- object$biashid outweight <- object$outweight actfun <- object$actfun nhid <- object$nhid TV.P <- t(x)

########2.通过参数将X值进行变化 

 tmpHTest = inpweight %*% TV.P biasMatrixTE <- matrix(rep(biashid, ncol(TV.P)), nrow = nhid,  ncol = ncol(TV.P), byrow = F) tmpHTest = tmpHTest + biasMatrixTE

########3.高维度映射,通常选择sig函数if (actfun == "sig")  HTest = 1/(1 + exp(-1 * tmpHTest))else {if (actfun == "sin")  HTest = sin(tmpHTest)else {if (actfun == "radbas")  HTest = exp(-1 * (tmpHTest^2))else {if (actfun == "hardlim")  HTest = hardlim(tmpHTest)else {if (actfun == "hardlims")  HTest = hardlims(tmpHTest)else {if (actfun == "satlins")  HTest = satlins(tmpHTest)else {if (actfun == "tansig")  HTest = 2/(1 + exp(-2 * tmpHTest)) - 1else {if (actfun == "tribas")  HTest = tribas(tmpHTest)else {if (actfun == "poslin")  HTest = poslin(tmpHTest)else {if (actfun == "purelin")  HTest = tmpHTestelse stop(paste("ERROR: ", actfun, " is not a valid activation function.",  sep = "")) } } } } } } } } }

########4.进行预测的值计算,即Y(预测)=AX TY = t(t(HTest) %*% outweight) predictions <- t(TY) } predictions}

通过R讲述了极限学习机的内部构造,以下是R自带的示例:通过极限学习机预测

library(elmNN)set.seed(1234)Var1 <- runif(50, 0, 100) sqrt.data <- data.frame(Var1, Sqrt=sqrt(Var1))model <- elmtrain.formula(Sqrt~Var1, data=sqrt.data, nhid=10, actfun="sig")new <- data.frame(Sqrt=0,Var1 = runif(50,0,100))p <- predict(model,newdata=new)

转自:https://ask.hellobi.com/blog/Zason/4543

转载于:https://www.cnblogs.com/payton/p/5743128.html

R语言快速深度学习进行回归预测(转)相关推荐

  1. 极限学习机︱R语言快速深度学习进行回归预测

    本文转载于张聪的博客,链接:https://ask.hellobi.com/blog/zason/4543. 深度学习在过去几年,由于卷积神经网络的特征提取能力让这个算法又火了一下,其实在很多年以前早 ...

  2. 碎片︱R语言与深度学习

    笔者:受alphago影响,想看看深度学习,但是其在R语言中的应用包可谓少之又少,更多的是在matlab和python中或者是调用.整理一下目前我看到的R语言的材料: ---------------- ...

  3. R语言︱H2o深度学习的一些R语言实践——H2o包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...

  4. R语言 深圳 面授_「深圳侦探电话」用R语言实现深度学习情感分析

    04-16阅读数466 作者:黄天元,复旦大学博士在读,目前研究涵盖文本挖掘.社交网络预测和机器学习等.希望与你们分享学习心得,推广并加深R语言在业界的应用.邮箱:huang.tian-yuan... ...

  5. R语言h2o深度学习分类

    配置所需环境: install.packages("h2o") library(h2o) Sys.setenv(JAVA_HOME="E:/java/JAVA(1)&qu ...

  6. 【C语言进阶深度学习记录】五 C语言中变量的属性

    上一篇文章学习了C语言中的类型转换,点击链接查看:[C语言进阶深度学习记录]四 C语言中的类型转换. 文章目录 1 C语言的变量属性 1.1 auto关键字 1.2 register关键字 1.3 s ...

  7. 转:邓一硕《R语言书籍的学习路线图》

    现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑 ...

  8. [数据挖掘工具] R语言书籍的学习路线图(转自格物堂)

    在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到 ...

  9. R语言书籍的学习路线图(转自格物堂)

    [转]http://bbs.pinggu.org/thread-1522238-1-1.html 现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程, ...

最新文章

  1. 中科大“量子鹊桥”登Nature封面,量子牛郎和织女没见面就能纠缠了
  2. 编码问题(BOM头简单了解)
  3. Divide it!
  4. boost::EccentricityProperty用法的测试程序
  5. 浅谈对5G核心网演进方向的几点展望
  6. linux之ip route命令
  7. 【dfs】益智游戏(2017 特长生 T2)
  8. visual studio 调试 定义debug常量_有趣的阅读 12个提高生产力的Visual Studio调试技巧...
  9. Pytorch 尝试通过强化cpu使用加快训练和推理速度(二)
  10. Flipping elements with WPF
  11. Joomla网站的移植步骤
  12. linux内核内存溢出检测,linux下有什么检测内存溢出的工具
  13. java中窗口怎么添加动态图_java 点击按钮在窗口中加载图片
  14. OpenCV角点检测—Harris,SIFT,ORB(7)
  15. 聊聊什么是自动化测试,什么是自动化测试框架
  16. LCD液晶屏中文显示介绍
  17. 进阶篇:3.9)3d打印件设计
  18. |转贴| 《穆荷兰大道》解开你的谜团!
  19. [CentOS Python系列] 五.阿里云部署web环境及通过IP地址访问服务器网页
  20. 4椭圆曲线密码学:破坏安全性及与RSA的比较

热门文章

  1. se linux ll-z,Linux selinux 基础
  2. 用navixt连接mysql连接不上_技嘉的RX 5500 XT、1650/1660 SUPER显卡现身欧亚经委会数据库:实锤两家中端新卡...
  3. Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
  4. 虚拟机Ubuntu 挂载硬盘
  5. ionic4请求skynet服务器的资源跨域问题
  6. 人生不值得,我在用python.1_关于python
  7. 四、CLR执行程序集中代码和IL代码简介
  8. centos6.5安装mono
  9. Spring4.0编程式定时任务配置
  10. The following types may not be used as proxies 异常处理办法