python梯度下降法的简单示例


Posted in Python onAugust 31, 2018

梯度下降法的原理和公式这里不讲,就是一个直观的、易于理解的简单例子。

1.最简单的情况,样本只有一个变量,即简单的(x,y)。多变量的则可为使用体重或身高判断男女(这是假设,并不严谨),则变量有两个,一个是体重,一个是身高,则可表示为(x1,x2,y),即一个目标值有两个属性。

2.单个变量的情况最简单的就是,函数hk(x)=k*x这条直线(注意:这里k也是变化的,我们的目的就是求一个最优的   k)。而深度学习中,我们是不知道函数的,也就是不知道上述的k。   这里讨论单变量的情况:

在不知道k的情况下,我们是通过样本(x1,y1),(x2,y2),(xn,yn)来获取k。获取的k的好坏则有损失函数来衡量。

损失函数:就是你预测的值和真实值的差异大小(比如一个样本(1,1)他的真实值是1,而你预测的是0.5,则差异   比较大,如果你预测值为0.9999,则差异就比较小了)。

损失函数为定义如下(此处为单变量的情况)

python梯度下降法的简单示例

目的是求使损失函数最小的变量k(注意和变量x区分),则将损失函数对k求导(多变量时为求偏导得梯度,这里单变量求导,其实不算梯度),求偏导如下:

python梯度下降法的简单示例

然后迭代,迭代时有个步长alpha,(深度学习中貌似叫学习率)

python梯度下降法的简单示例

3.例子

假如我们得到样本(1,1),(2,2),(3,3).其实,由这三个样本可以得到函数为y = 1*x。此时损失函数为0.而机器是不知道的,所以我们需要训练。

下面是一段python代码。

import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-5, 5, 0.001)
y=(((x-1)*(x-1)+(x*2-2)*(x*2-2)+(x*3-3)*(x*3-3))*1/6.0)
plt.plot(x,y) 
#plt.show() #显示图形 
 

def sum(x):
 return ((x*1-1)*1+(x*2-2)*2+(x*3-3)*3)
def fun(x):
 return ((1/3.0)*sum(x))
old = 0
new = 5
step = 0.01
pre = 0.00000001
 
def src_fun(x):
 print(((x-1)*(x-1)+(x*2-2)*(x*2-2)+(x*3-3)*(x*3-3))*1/6.0)
 
while abs(new-old)>pre:
 old = new
 #src_fun(old)  #输出每次迭代的损失值
 new = new - step*fun(old)
 
 
print(new)
print(src_fun(new))

下图是损失函数的图像,损失函数中变量是k。下图横坐标为k的不同取值,纵轴为对应的损失大小。由下图可以大致看出,当k为1时,损失函数值为0。注意:这里取的最优值k=1是在我们已有样本的情况下得出的,样本不同,k值自然不同。

python梯度下降法的简单示例

下面是print(new)和print(src_fun(new))的输出结果

python梯度下降法的简单示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用htmllib分析网页内容的方法
May 08 Python
对于Python装饰器使用的一些建议
Jun 03 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
Python3控制路由器——使用requests重启极路由.py
May 11 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
python使用RNN实现文本分类
May 24 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
Python中使用Lambda函数的5种用法
Apr 01 Python
wxPython的安装与使用教程
Aug 31 #Python
python traceback捕获并打印异常的方法
Aug 31 #Python
基于python中theano库的线性回归
Aug 31 #Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 #Python
python实现梯度下降算法
Mar 24 #Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 #Python
opencv python 图像去噪的实现方法
Aug 31 #Python
You might like
第一个无线电台是由谁发明的
2021/03/01 无线电
php利用cookie实现访问次数统计代码
2011/05/19 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
PHP连接access数据库
2015/03/27 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
Python 文件管理实例详解
2015/11/10 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
python解析xml简单示例
2019/06/21 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
大门门卫岗位职责
2013/11/30 职场文书
教师自我鉴定
2013/12/13 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
软件项目开发计划书
2014/05/01 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
vue自定义右键菜单之全局实现
2022/04/09 Vue.js