sgd

Using SGD without using sklearn (LogLoss increasing with every epoch)

荒凉一梦 提交于 2020-08-08 05:16:08
问题 def train(X_train,y_train,X_test,y_test,epochs,alpha,eta0): w,b = initialize_weights(X_train[0]) loss_test=[] N=len(X_train) for i in range(0,epochs): print(i) for j in range(N-1): grad_dw=gradient_dw(X_train[j],y_train[j],w,b,alpha,N) grad_db=gradient_db(X_train[j],y_train[j],w,b) w=np.array(w)+(alpha*(np.array(grad_dw))) b=b+(alpha*(grad_db)) predict2 = [] for m in range(len(y_test)): z=np.dot(w[0],X_test[m])+b if sigmoid(z) == 0: # sigmoid(w,x,b) returns 1/(1+exp(-(dot(x,w)+b))) predict2

复习1: 深度学习优化算法 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 详细解释 + 如何选择优化算法

送分小仙女□ 提交于 2020-02-26 09:14:05
深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的发展历程。优化器其实就是采用何种方式对损失函数进行迭代优化,也就是有一个卷积参数我们初始化了,之后loss还很大,我们让这个参数根据loss的梯度如何变,每次变多少可以让loss函数在凸曲面上不断变小而找到最优解? 目录 梯度下降相关(GD-miniGD-SGD-SGDM-NAG) Gradient Descent 梯度下降 mini-batch Gradient Descent 小批量梯度下降 Stochastic Gradient Descent 随机梯度下降 (SGD) Stochastic Gradient Descent Momentum 带动量的梯度下降法(SGDM) Nesterov Gradient Descent 带牛顿动量的梯度下降法 (NAG) Adam相关(AdaGrad -AdaDelta -RMSProp-Adam -Nadam) Adaptive Gradient Descent (AdaGrad) AdaDelta RMSprop 加速梯度下降 Adaptive Moment Estimation (Adam) Nadam=Nesterov + Adam 二阶近似的优化算法 总结 总结 Adam那么棒

深度学习的数学理解

点点圈 提交于 2020-02-12 04:27:47
本文来自 : 李铁军教授专访:当数学家遇见人工智能 在人工智能领域,尽管以深度学习为代表的AI算法正受业界热捧,但它的“黑盒”式学习模式给整个行业的进一步发展蒙上了隐忧。用中国科学院院士、智源研究院学术委员会主席张钹在某次接受媒体采访时的观点来说,便是现在“AI奇迹短期难再现,深度学习潜力已近天花板”:算法只有“相关性”,而无“因果性”,将带来人工智能系统根基的脆弱性、可欺骗性等深远隐患。这个观点,已经在中国人工智能业界引起了重大反响和一定程度的共识。 早在2019年4月,智源研究院便已发布了重大方向“人工智能的数理基础”,并支持诸多中国顶尖数学家,致力于研究、解决人工智能领域最根本的理论挑战,比如可计算性、可解释性、泛化性、稳定性等。那么,让数学家们解决人工智能的问题,他们主要的特点和优势会是什么?他们将给人工智能产业注入哪些令人耳目一新的血液?为此,我们采访了智源研究院“人工智能的数理基础”成员之一、北京大学数学学院教授李铁军。李铁军教授是国内计算数学领域随机算法方面的学术带头人,已经在随机算法和模拟方面的诸多领域取得了突出成果。 01 数据科学,将会和物理科学分庭抗礼 智源:能否谈谈您从事数学研究的主要经历,您为什么会对数学感兴趣? 李铁军:我小学时便爱上了数学,到了初中时,记得读了一本名叫《数学5000年》的科普书,它讲述的古代希腊、巴比伦、中国还有近代的数学史等

SGD的优化:SGD+Momentum、Nesterov Momentum、AdaGrad、 RMSProp、Adam

孤街浪徒 提交于 2020-02-05 01:53:57
1. SGD的不足 : ①呈“之”字型,迂回前进,损失函数值在一些维度的改变得快(更新速度快),在一些维度改变得慢(速度慢)- 在高维空间更加普遍 ②容易陷入局部极小值和鞍点: 局部最小值: 鞍点: ③对于凸优化而言,SGD不会收敛,只会在最优点附近跳来跳去 - 可以通过使用不固定的learning rate来解决 (凸优化的全局最优点是针对训练数据而言的,更换了当前训练数据,当前的最优点就变了。所以SGD本来就没有固定的全局最优点。最后得到的是多个batch上最优点的一个或几何均值) 2. SGD+Momentum(动量梯度下降) :在SGD的基础上,引入一阶动量,增加惯性。SGD的缺点是参数更新方向只依赖于当前batch计算出的梯度,因此十分的不稳定。为了抑制SGD的震荡,可以在梯度下降的过程中加入惯性。t时刻的下降方向,不仅由当前点的梯度方向决定,还由此前的累积的梯度来决定。若当前的梯度方向与累积的历史梯度方向一致,则当前的梯度会被加强,从而这一步下降的幅度更大。若当前的梯度方向与累积的梯度方向不一致,则会减弱当前下降的梯度幅度 ①一阶动量:是指各个时刻梯度的指数加权平均 β的经验值一般为0.9:下降方向主要是此前累积的下降方向,并略微偏向当前时刻的下降方向,利用当前batch微调最终的更新方向。如果当前梯度方向与历史梯度一致,会增强该方向的梯度。如果不一致,能够减少更新

学习《机器学习实战》四

送分小仙女□ 提交于 2020-01-27 15:59:51
训练模型 训练模型就是搜寻使成本函数(在训练集上)最小化的参数组合。 有助于快速定位到合适的模型、正确的训练算法,以及一套适当的超参数。 一、线性回归(LinearRegression) 线性模型就是对输入特征加权求和,再加上一个偏置项的常数,以此进行预测。 线性回归模型预测: 衡量一个回归模型性能指标:均方根误差(RMSE),但求均方误差(MSE)更方便 我们生成一些线性数据来测试这个公式 import numpy as np X = 2 * np.random.rand(100, 1) y = 4 + 3 * X + np.random.randn(100, 1) X表示100个数据的1个特征属性 以点的形式来表示100个数据: 生成的线性函数是y=4+3x from matplotlib import pyplot as plt plt.xlabel("X") plt.ylabel("y") plt.scatter(X, y, marker = 'o', color = 'green', s = 40) plt.show() 现在,我们使用标准方程来计算θ。使用Numpy的线性代数模块(np.linalg)中的inv()函数来对矩阵求逆,并用dot()方法计算矩阵内积: X_b = np.c_[np.ones((100, 1)), X] theta_best = np

学习率与动量的关系:此涨彼消,以达到动态平衡

核能气质少年 提交于 2020-01-09 23:04:43
选择适当大小的学习率和动量,太大会使loss振荡,太小不足以使loss达到最优值。 1、train_gluon_ch7(‘sgd’, {‘learning_rate’: 0.004, ‘momentum’: 0.99}, features, labels) loss: 0.301315, 0.176527 sec per epoch 2、train_gluon_ch7(‘sgd’, {‘learning_rate’: 0.004, ‘momentum’: 0.95}, features, labels) loss: 0.256159, 0.194480 sec per epoch 3、train_gluon_ch7(‘sgd’, {‘learning_rate’: 0.004, ‘momentum’: 0.9}, features, labels) loss: 0.243600, 0.181515 sec per epoch 4、train_gluon_ch7(‘sgd’, {‘learning_rate’: 0.004, ‘momentum’: 0.8}, features, labels) loss: 0.244236, 0.172539 sec per epoch 5、train_gluon_ch7(‘sgd’, {‘learning_rate’: 0.004,

手把手教你搭建Oracle Secure Global Desktop演示环境

岁酱吖の 提交于 2020-01-07 09:52:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 你可以在 这里 找到原文。 前提条件 已经安装和配置好下列OS环境: Oracle Linux 6.5 64bit Hostname: sgd.example.com IP: 192.168.56.110 已经配置好一个可用的Yum源。 本例使用了一个本地FTP( ftp://192.168.56.254/pub/iso )作为Yum源。而且,SGD的安装包已经下载好,重命名为 SGD5.2forLin.zip ,同时上传到这个FTP上( ftp://192.168.56.254/pub/SGD5.2forLin.zip )。 所有的安装操作都是以root用户来进行的。 安装前设置 修改 /etc/hosts 文件,在末尾加入IP与主机名的映射。 [root@sgd ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.56.110 sgd sgd.example.com 关闭防火墙: [root@sgd ~]#

Oracle Secure Global Desktop服务器配置估算建议

孤人 提交于 2020-01-07 09:36:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 你可以在 这里 找到本文的原始文章。 作为统一的应用程序访问层入口,Oracle Secure Global Desktop的服务器配置应该如何估算呢?如何决定服务器的CPU,内存配置呢?这些问题是在Oracle Secure Global Desktop应用到生产环境中必须要考虑的。 在估算Oracle Secure Global Desktop服务器配置之前,首先需要明白在实际应用中有一些因素我们是照顾不到的,或者,换句话说是存在不可控的变量,比如: 用户实际通过SGD运行的应用程序类型:写字板,Word,Firefox或者是xterm 用户是如何使用这些应用程序的:仅仅是阅读文档,还是输入文本,听听音乐还是需要处理视频 这些不可控的变量会直接影响到Oracle Secure Global Desktop的服务器上的资源消耗。再举个例子: 拿内存使用量来说:一个横跨4个显示器的应用程序肯定比只使用1024x768单个窗口的应用程序消耗的内存多 拿CPU的使用量来说:相比显示文本数据的应用程序,进行视频播放,或者高频度鼠标操作,或者运行动画的这些应用程序,显然需要消耗更多的CPU。 在理解了这些不可控的变量对估算的影响之后,我们可以进一步进行估算。 首先从宏观着手,下面是服务器配置估算的一些建议:

Oracle Secure Global Desktop 部署考虑事项

China☆狼群 提交于 2020-01-07 09:35:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 你可以在 这里 找到原始文章。 概要 本文描述了Oracle Secure Global Desktop部署的设计和测试过程的整体过程。目的是帮助IT部门制定应用程序的部署策略,以满足IT部门和业务部门的需求。 目前IT组织的最大挑战就是为分散在各个地域的用户提供对其特定工作区(应用程序和桌面)的即时,可靠,无性能退化的访问。此外,管理者也需要对这些分散到各个地域的工作区进行集中的访问管理。这并不容易。很多客户通过使用Oracle Secure Global Desktop部署工作区来为其数以千计的员工解决这一问题。Oracle Secure Global Desktop能够成为该问题的理想解决方案的优势如下: 一致的用户体验: 用户可以使用几乎任何设备,简单地从浏览器访问一个URL,就可以在任何地方来访问他们的工作区。 无需客户端软件: IT部门无需在每一个用户终端上维护一份客户端软件,因为用户可以通过任意支持的浏览器来访问Oracle Secure Global Desktop。在桌面设备上无需客户端软件意味着应用程序完全可以在服务器端进行更新,极大的减少了IT环境更新给用户带来的时间损耗。 移动会话: 用户可以在Oracle Secure Global Desktop工作区中暂停,继续,或者终止会话

在SGD中发布Oracle Linux 7 的Xfce桌面环境

北城余情 提交于 2020-01-07 09:30:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 你可以在 这里 找到本文的原文。 从Oracle Linux 7和Red Hat Linux 7开始,默认的桌面环境变成了Gnome3。与之前的Gnome相比,Gnome3带来了很多新的东西,但是也带来很多新的问题。比如UI的不稳定,一些应用程序不支持。 还好,Linux的世界从来不会因为一个软件的更新而困住用户,对于Linux的桌面环境来说,我们还可以选择KDE或者更轻量级的XFCE。 环境说明 本文使用了Oracle Linux 7.2和SGD 5.2。 XFCE的安装 由于Oracle Linux和Red Hat Linux官方不提供XFCE的安装包,所以需要从EPEL进行安装。 下载EPEL的rpm文件 http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm 通过Yum来安装EPEL yum install --nogpgcheck epel-release-7-8.noarch.rpm 安装XFCE桌面环境 yum -y group install "Xfce" 在SGD管理控制台中配置XFCE桌面对象 打开 SGD Administration Console , 创建一个应用程序对象,命名为 Xfce