1. model

这里待求解的是一个 binary logistic regression,它是一个分类模型,参数是权值矩阵 WW 和偏置向量 bb。该模型所要估计的是概率 P(Y=1|x)P(Y=1|x),简记为 pp,表示样本 xx 属于类别 y=1y=1 的概率:

P(Y=1|x(i))=p(i)=eWx(i)+b1+eWx(i)+b=11+e−Wx(i)−b

P(Y=1|x^{(i)})=p^{(i)}=\frac{e^{Wx^{(i)}+b}}{1+e^{Wx^{(i)}+b}}=\frac1{1+e^{-Wx^{(i)}-b}}

当然最终的目标是求解在整个样本集 D={(x(i),y(i)),0<i≤N}\mathcal D=\{(x^{(i)}, y^{(i)}), 0 的对数概率(关于 WW和 bb):

ℓ(W,b)=−1N∑iNy(i)logp(i)+(1−y(i))log(1−p(i))

\ell(W,b)=-\frac1N\sum_{i}^N\mathrm y^{(i)}\log p^{(i)}+(1-\mathrm y^{(i)})\log(1-p^{(i)})

  • 这里的取均值是为了解耦后续的正则化系数,以及 SGD 时的步长的选择;

当然也可对 WW 进行二范数约束(F范数约束,全部项的平方和):

E(W,b)=ℓ(W,b)+0.01W2F

E(W,b)=\ell(W,b)+0.01W_F^2

2. theano 的使用

实现 theano 下的最小化问题的求解,涉及如下的四个流程:

  • (1)声明符号变量;

    import numpy
    import theano.tensor as T
    from theano import shared, functionx = T.matrix()
    y = T.lvector()
    w = shared(numpy.random.randn(100))
    b = shared(numpy.zeros(()))
    print 'step 1, initial mode: '
    print w.get_value(), b.get_value()
  • (2)使用这些变量构建符号表达式图(symbolic expression graph)

    
    # hypothesisp_1 = 1/(1+T.exp(-T.dot(x, w)-b))
    xent = -y*T.log(p_1)-(1-y)*T.log(1-p_1)
    cost = xent.mean() + 0.01*(w**2).sum()
    gw, gb = T.grad(cost, [w, b]);
    prediction = p_1 > .5
  • (3)编译 Theano functions;

    train = function(inputs=[x, y], outputs=[predication, xent], updates={w:w-0.1*gw, b:b-0.1*gb})predict = function(inputs=[x], outputs=predication)
  • (4)调用编译好的函数来执行数值计算;

    N = 4
    feats = 100
    D = (numpy.random.randn(N, feats), numpy.random.randi(low=0, high=2, size=(N,)))
    training_epochs = 10
    for _ in range(training_epochs):pred, err = train(D[0], D[1])
    print 'final model: '
    print 'target values for D', D[1]
    print 'predication on D', predict(D[0])

用 theano 求解 Logistic Regression (SGD 优化算法)相关推荐

  1. 加速收敛_引入Powerball 与动量技术,新SGD优化算法收敛速度与泛化效果双提升 | IJCAI...

    本文介绍的是 IJCAI-2020论文<pbSGD: Powered Stochastic Gradient Descent Methods for Accelerated Non-Convex ...

  2. 利用Theano理解深度学习——Logistic Regression

    一.Logistic Regression 1.LR模型 Logistic回归是广义线性模型的一种,属于线性的分类模型,在其模型中主要有两个参数,即:权重矩阵 W W W和偏置向量 b b b.在Lo ...

  3. 单目标优化:飞狐优化算法(Flying Foxes Optimization,FFO)求解cec2017(提供Matlab代码)

    一.飞狐优化算法简介 飞狐优化算法(Flying Foxes Optimization,FFO)由Konstantinos Zervoudakis与Stelios Tsafarakis于2022年提出 ...

  4. 单目标优化:猎豹优化算法(The Cheetah Optimizer,CO)求解cec2020(提供Matlab代码)

    一.猎豹优化算法 猎豹优化算法(The Cheetah Optimizer,CO)由MohammadAminAkbari等人于2022年提出,该算法性能高效,思路新颖. 参考文献: Akbari, M ...

  5. 优化算法SGD/ASGD/AdaGrad/Adadelta/RMSprop/Adam/Adamax/SparseAdam/L-BFGS/Rprop

    机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着丹药出炉了. 不过,当过厨子的都知道,同样的食材,同样的菜谱,但火候不一样了, ...

  6. CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)

    一.斑马优化算法 斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovská等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为. 斑马因身上 ...

  7. 单目标优化:海马优化算法(Sea Horse Optimizer,SHO)求解CEC2020(提供Matlab代码)

    一.海马优化算法 海马优化算法(Sea Horse Optimizer,SHO)由Shijie Zhao等人于2022年提出,该算法性能高效,思路新颖. 参考文献:Zhao, S., Zhang, T ...

  8. 台湾大学林轩田机器学习技法课程学习笔记5 -- Kernel Logistic Regression

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Soft-Margin SVM,即如果允许有分类错误的点存在,那么在原来的Hard-Margin SVM中添加新的惩罚因子C, ...

  9. logistic regression识别真假币

    介绍 本篇实现了使用 logistic logistic回归进行真假币的判断,有关 logistic regression logistic\ regression的详细讲解见这里.本篇使用随机梯度下 ...

最新文章

  1. SEO基础知识8大精华文章之第三篇 SEO的历史(连载)
  2. UML图大科普 :14种UML图图例详解
  3. js获取iframe里的元素
  4. maven 配置篇 之pom.xml
  5. android crash没有日志_Android开发必备神器CrashCanary
  6. 爬虫系列4:Requests+Xpath 爬取动态数据
  7. 计算机漏洞为什么无法避免,雷电3接口漏洞影响数百万计算机:5分钟解锁设备,无法修复...
  8. k-means 及其改进 数库
  9. abaqus2018安装教程win10_win10系统安装Abaqus2016全攻略
  10. 阿里巴巴最新区块链专利申请文件解读
  11. CS231n Assiganment#1-KNN 代码解析
  12. js通过base64编码显示图片
  13. Largest prime factor
  14. Android背景设置透明和半透明效果
  15. 半监督学习:semi-supervised learning 直推学习:transductive learning 主动学习:active learning
  16. 海南三亚游记2022-2023跨年
  17. 【数据结构实验】使用树结构存储医院楼房结构
  18. VRAR概念的定义和要素以及技术定义和应用
  19. 关于联通200M宽带升级后速度没有提升的坑
  20. 每日新闻:未来,电脑像手机一样?

热门文章

  1. send的内容ajax,Ajax中send方法的使用
  2. win10基于anaconda下的tensorflow2.0.0及cuda10.0、cudnn安装成功
  3. hive表存储格式的转化
  4. jqGrid中时间控件input的值赋给点开后的laydate控件
  5. 剑指offer面试题34. 二叉树中和为某一值的路径(先序遍历)(回溯)
  6. c++ class 类名 和 include 的区别
  7. 图像变换--灰度切割、位图切割
  8. 从数据库中导出数据库文档(新增了索引及表的描述信息)
  9. java gpu hash_比特币 GPU 挖矿 Sha256 Hash实现(OpenCL)
  10. 20155327结对编程练习