随机梯度下降算法

pysgd的Python项目详细描述


pysgd
==

``pysgd``包包含一个执行各种随机梯度下降算法的函数。该函数接受数据、目标函数、梯度下降自适应和算法超参数作为参数。


主模块中的一个主函数,
``sgd`,一个类,``objective`,以及用于自适应和
目标函数的模块。`` sgd``使用
自适应和目标功能模块以及指定的任何数据创建一个``objective``实例。
目标模块包括梯度和成本函数。gradient
函数接受"theta"和"batch"作为参数,而cost
函数接受"theta"和"data"。自适应设置为
修饰的生成器函数,接受"params"和"grad\u fun"作为
参数。`` params``是超参数的字典,``grad_fun`是一个
梯度函数。`` objective``创建一个梯度生成器和一个cost
函数(根据需要注入批处理生成器和数据),每个
都接受``theta``作为单个参数。然后,这些函数被用于``sgd``中的主梯度下降算法中。


该包的结构便于包含附加
算法和最小附加样板。附加目标
函数和渐变适配可以按照包含函数和渐变适配的基本
形式添加,并将它们放在各自的文件夹中。



||--达达格拉德。py
——adam.py
——常数。py
;——目标
——线性。py
/>梯度下降是一种方法使目标函数最小化。在机器学习应用中,要最小化的目标函数是预测模型的误差(或成本)。预测模型由一个应用于输入的参数"theta"、"x"、"br"(也称为训练样本、特征、观察或独立变量)组成,以估计输出"y"hat(也称为标签或因变量)。梯度下降试图确定当应用于一组输入时导致最低总误差的
参数(实际结果与模型预测的
之间的差异)。下面是基本的预测公式。

``h(x,theta)=y_hat``

根据
应用程序使用,但上面的公式表达了尽可能接近预测实际结果的本质。

确定成本下降最快的"方向"(称为"梯度")。向那个方向更新``theta``少量
(称为学习率或``alpha``),然后重复,直到成本最小化。

``theta`(j+1)=theta j-alpha*梯度`

api
~~


一个``j x(n+2)`
数组,其中``j``是迭代次数,``n``是特征数
。`` Theta_j``位于前``n+1``列中,成本
``j_j``位于后一列中。

--"————————————————————————————————————————————————————————————————————————————————————————————————————————————————\|\|\`` obj='stab-tang````目标函数
以字符串的形式最小化,其值为``stab-tang``,
``linear``或``logistic``。`` stab_tang``是用于"stablinsky tang
函数<;https://en.wikipedia.org/wiki/test_functions_for_optimization>;``uu,
用于测试和说明目的。\|
\\``adapt='常量````渐变渐变适应,以值为``constant``、``adagrad``或``adam``的字符串形式出现。

原始:html

<;ul>;

…raw::html

<;li>;

``constant``不应用自适应

…原始:html

<;/li>;

…raw::html


``adagrad``实现`自适应梯度
算法<;http://stanford.edu/~jduchi/projects/duchihasi10懔colt.pdf>;``uuu

。原始:html

<;/li>;

…原始::html

<;li>;

``adam``实现`自适应矩
估计<;https://arxiv.org/pdf/1412.6980v8.pdf>;``uuu

……原始:html

<;/li>;

…raw::html

<;/ul>;

::




\\`data=np.array(闭括号)```\\`data,格式为
``m x(n+1)``array,包括第一列中的"one",如果有必要,其中"m"是训练观察次数。\|
\`` size=50```批处理大小,以``1``和
``m``之间的整数形式表示。连续地在数据上生成批,直到θ收敛或所有观测值都包含在批中,其中
点在使用其他批处理之前对数据进行洗牌。\
\ ``alpha=.01```````学习率``alpha``以浮点
点整数的形式。\|\|\`` epsilon=10**-8```超参数,由
``adagrad``和``adam``用于平滑。\|\|\`` beta1=0.9``
\``adam`使用的超参数,用于控制
移动梯度平均值的衰减率。\|\|\`` beta2=0.999`````由控制移动梯度平均值衰减率的
``adam`使用的超参数。
``delta` min=10**-6``````所有元素中建立收敛所需的最大变化量,以浮点
点整数的形式。如果在较少的迭代中没有实现收敛,则要计算的最大批数为
。\|

测试使用
`pytest<;http://doc.pytest.org/en/latest/index.html>;``进行,覆盖代码的100%


https://en.wikipedia.org/wiki/test_functions_for_optimization>;`uuu
用于测试。该函数是非凸的,具有直接的
梯度计算,使得可以将算法产生的
值与已知值进行比较。通过使用二维
输入``j``在``theta`
范围内的所有可能值都可以绘制为曲面。`` j(theta)``对于
的每次迭代,可以在曲面上绘制算法,以便可视化
梯度下降。


包含笔记本中的绘图中曲面的颜色比例
对应于``j``的值。
曲面上的点在每次迭代时表示"j"(θj)的色阶对应于算法的迭代。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
将Java double[]]数组设置为double[],但不复制   java生成一个定制的lastIndexOf方法   bigdecimal在Java中何时应使用浮点类型?   java在BigO符号上的困惑   java从指定的文件夹加载一个jar和一个特定的类?   java安卓:在按钮下放置文本   java如何为具有多种类型的项设计rest端点?   java Javafx:ListView禁用列表中的指定元素   JavaJSF:如何一次呈现=#{bean.isRendered}多个组件   如何在自定义序列化(Java)中重写final writeObject()方法   java如何在不重命名实例变量的情况下使用实例变量两次?   使用servlet过滤器时,应用程序引擎上的java Spring启动应用程序出错   java我的代码适用于访问器和变异器方法吗?   java Bellman Ford随机生成错误结果   JavaDoc生成的文档两次列出类和方法   内存中的java H2数据库控制台未打开   排序如何在java中对arraylist进行反向排序?(仅使用选择排序)   在Java中调用参数化构造函数   java如何在eclipse中恢复我选中的已删除项目(删除磁盘上的内容)   java如何停止等待用户输入?