迭代计算

机器学习基石10-Logistic Regression

烈酒焚心 提交于 2020-02-09 05:50:04
注: 文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程。 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了Linear Regression线性回归,用均方误差来寻找最佳的权重向量 \(w\) ,获得最好的线性预测。本节课将介绍Logistic Regression逻辑回归问题。 一、Logistic Regression Problem 一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出 \(y\) 只有 \({0,1}\) 两种情况。 二元分类,一般情况下,理想的目标函数 \(f(x)>0.5\) ,则判断为正类 \(1\) ;若 \(f(x)<0.5\) ,则判断为负类 \(-1\) 。 但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在0,1之间),表示是正类的概率(正类表示是心脏病)。这跟我们原来讨论的二分类问题不太一样,我们把这个问题称为软性二分类问题('soft' binary classification)。这个值越接近 \(1\) ,表示正类的可能性越大;越接近 \(0\) ,表示负类的可能性越大。 对于软性二分类问题,理想的数据是分布在 \([0,1]\) 之间的具体值,但是实际中的数据只可能是 \(0\) 或者

Python 生成器

孤者浪人 提交于 2020-02-08 23:39:15
生成器 Generator 是迭代器的一种. Review Iterator 上篇呢, 对 迭代器 有过谈到, 从 迭代过程, 迭代对象, 迭代器都进行了说明, 首先要理解概念, 其实理解词性就可以. 迭代器 对 可迭代对象 进行 迭代 . 从主谓宾上就理清了这几个名词. 更通俗一般地理解: 迭代: 在代码中表现为对 某个对象进行 for 遍历 的过程 (包含了 next()) 可迭代对象: 能够被 遍历 的对象, 如 list, tuple, str, dict, range, enumerate, zip .... 迭代器: 能够被 next() 函数调用, 并不断返回下一个值的对象. 即实现了 __ iter __ 和 __ next __ 方法. for 循环原理: 会先调用 __ iter __ 方法, 然后不断调用 __ next __ 方法, 直到捕捉到异常类 StopIteration # for的原理 class A: def __iter__(self): print("__iter__ is called") return self def __next__(self): print("__next__ is called") for i in range(3): print(i) raise StopIteration if __name__ == '_

第四章 JavaScript 数组挖掘

守給你的承諾、 提交于 2020-02-08 22:17:32
1.值类型与引用类型 值类型会指向同一个内存地址,而引用类型不会。 let array = [1,2,3,4] let msg = array msg[1] = "weizhuren" console.log(msg)//[1, "weizhuren", 3, 4] console.log(array)//[1, "weizhuren", 3, 4] console.table(array)//以表格形式打印 let a = 99 let b = a b++ console.log(a,b)//99 100 2.多维数组操作 多为数组可以使用以下方式定义,但是在开发过程中我们通常使用数组内定义对象的方式。 let array = ["wei",["zhu","ren"]] console.log(array[1][1]) let msg = [{name:"weizhuren",department:"erbihou"}] console.log(msg[0].name) 3.Array.of与数组创建细节 如果在一个长度为n的数组中新增加一个n+m(m>1)的元素,那么中间没有定义的元素会全部定义为undefined。 let array = ["weizhuren"] array[2] = "erbihou" console.log(array)//["weizhuren",

强化学习(2) 动态规划(Dymatic Progressing)

核能气质少年 提交于 2020-02-08 16:09:18
1. 1 同步价值迭代 动态规划来解决强化学习的规划问题。 在已经了解了状态、行为空间、转移概率矩阵、奖励等信息的基础上,判断一个策略的价值函数。或者判断策略的优劣寻找最优的策略。 一般强化学习是不知道上述的一些动力学环境,而且复杂的问题无法通过动态规划解决。 动态规划思想是把复杂问题变成求解子问题,最终再得到整个问题。子问题的结果一般需要保存以备后用。如果某个子问题重复出现,就可以重复使用结果。 马尔科夫决策过程最终用贝尔曼方程描述,贝尔曼方程是递归定义的。可以使用动态规划求解。 1.1. 概念: 预测prediction :已知MDP和一个策略 π \pi π ,或者MRP,求解该策略的 价值函数 v π v_\pi v π ​ 。 控制control :已知MDP,求最优的价值函数 v ∗ v_* v ∗ ​ 和 π ∗ \pi_* π ∗ ​ ,为了寻找最优策略 1.2. 预测 1.2.1. 策略评估 Policy evaluation 给定策略,求这个策略下状态价值函数。 方法:同步迭代联合动态规划的算法 任意 的 状态价值函数 开始,按照给定 策略 ,通过 贝尔曼方程 、 状态转移概率、奖励 ,同步迭代更新 状态价值函数 ,到 收敛 为止。就可以得到这个策略的最优状态价值函数。 重点:在一个迭代周期如何更新 每一个状态 的价值 这个算法一定可以收敛形成一个稳定的价值函数

DeepIM: Deep Iterative Matching for 6D Pose Estimation论文理解

我怕爱的太早我们不能终老 提交于 2020-02-08 04:16:36
文章目录 解决什么问题 本文创新点\贡献 前人方法 本文IDEA来源 方法 方法概述 High-resolution Zoom In 目的 步骤 Untangled Transformation Representation 目的 分析 旋转 位移 优点 数据准备 训练 网络 参数设置 训练和测试 loss Point Matching Loss mask和光流 loss 总loss 实验 度量 消融实验 迭代 缩放 regressor Network Coordinat loss 不同的初始位姿估计网络的应用 应用到没见过的物体 总结 解决什么问题 6Dpose估计的微调,让结果更精准 本文创新点\贡献 基于图片的pose微调网络 在目标位姿之间提出了 S E ( 3 ) SE(3) S E ( 3 ) 的untangled表达,这种表达还能用来微调看不见的物体 前人方法 将从图像中提取的特征和物体的3D模型中的特征匹配,使用2D-3D对应来估计位姿,但是这种处理不了纹理少的物体,能用来提取的特征很少 处理纹理少的方法:估计3D坐标系的像素或者关键点,然后建立对应来估计;用分类或回归的方法(小的的分类或回归误差会影响后来的结果) 本文IDEA来源 没讲,此处写一下借鉴的方法: [ Training a feedback loop for hand pose estimation

BP神经网络

纵饮孤独 提交于 2020-02-07 03:02:50
起源:线性神经网络与单层感知器 古老的线性神经网络,使用的是单层Rosenblatt感知器。该感知器模型已经不再使用,但是你可以看到它的改良版:Logistic回归。 可以看到这个网络,输入->加权->映射->计算分类误差->迭代修改W、b,其实和数学上的回归拟合别无二致。 Logistic回归对该模型进行了改良: 线性神经网络(回归)使用的LMS(最小均方)的数学原理其实可由最大似然估计+假设误差概率模型得到。(详见Andrew Ng视频) 在二类分类(误差非0即1)情况下,适用于连续型数据的最小均方显然不是很好的cost函数,会引起梯度过大。 仿照线性回归假设误差服从正态分布建立概率模型,Logistic回归假设误差服从二项分布建立概率模型。 Logistic函数的(0~1连续特性)在这里充当着,由输入评估概率的角色,而不是像下面的BP网络一样,起的是高维空间非线性识别作用。 该手法同样在RBM限制玻尔兹曼机中使用。 实际上,这两种模型的起源都是最小二乘法的线性回归。不同的是,早期的解决线性回归使用的矩阵解方程组,求得参数。 而基于梯度下降使目标函数收敛的数学方法,在计算神经科学领域,就变成神经网络了。 Part I :BP网络的结构与工作方式 BP网络中使用隐层(HideLayer)设定,目的是通过全连接的网络+非线性Sigmoid函数,疯狂地通过特征空间映射来区分非线性数据

Python内置函数

不想你离开。 提交于 2020-02-06 11:28:12
Duang! 68个内置函数 分类记忆 数学运算 × 7 abs() 、 divmod() 、 max() 、 min() 、pow() 、round() 、sum() 类型转换 × 24 bool() 、 int() 、 float() 、 complex() 、str() 、 ord() 、 chr() 、 bytearray() 、 bytes() 、 memoryview() 、 bin() 、 oct() 、 hex() 、 tuple() 、 list() 、 dict() 、 set() 、 frozenset()、 enumerate() 、 range() 、 iter() 、 slice() 、super() 、object() 序列操作 × 8 all() 、any() 、 filter() 、 map() 、next() 、reversed() 、sorted() 、zip() 对象操作 × 9 help() 、dir() 、 id() 、hash() 、type() 、len() 、ascii() 、format() 、vars() 反射操作 × 8 Import() 、isinstance() 、issubclass() 、hasattr() 、getattr() 、setattr() 、delattr() 、callable() 变量操作 × 2

Observable详解

╄→尐↘猪︶ㄣ 提交于 2020-02-05 09:09:03
Observable详解 rxjs angular2 在介绍 Observable 之前,我们要先了解两个设计模式: Observer Pattern - (观察者模式) Iterator Pattern - (迭代器模式) 这两个模式是 Observable 的基础,下面我们先来介绍一下 Observer Pattern。 Observer Pattern 观察者模式定义 观察者模式 是 软件设计模式 的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。 — 维基百科 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。 我们可以使用日常生活中,期刊订阅的例子来形象地解释一下上面的概念。期刊订阅包含两个主要的角色:期刊出版方和订阅者,他们之间的关系如下: 期刊出版方 - 负责期刊的出版和发行工作 订阅者 - 只需执行订阅操作,新版的期刊发布后,就会主动收到通知,如果取消订阅,以后就不会再收到通知 在观察者模式中也有两个主要角色:Subject (主题) 和 Observer (观察者)

REDIS 字典数据结构

淺唱寂寞╮ 提交于 2020-02-04 20:10:13
对于REDIS来讲 其实就是一个字典结构,key ---->value 就是一个典型的字典结构 【当然 对于vaule来讲的话,有不同的内存组织结构 这是后话】 试想一个这样的存储场景: key:"city" value:"beijing" 如果有若干个这样的键值对,你该怎么去存储它们呢 要保证写入和查询速度非常理想~! 抛开redis不说,如果你想要存储 快速查找的话, Hash算法是最快的,理想的哈希函数可以带来O(1)的查找速度,你都这样想,那么redis也的确采用这种方法来做~! 但是HASH算法有2个致命的弱点:1)填充因子不能太满 2)不好的HASH算法可能会导致一个冲突率非常高。 填充因子不能太满 这个理论上一般为0.5左右 过高 就是哈希槽都被塞满了 ,即使在好的哈希分布算法 也无法避免key冲突。 不好的哈希分布算法 丢到第一个因素来讲, 如果一个不好的哈希分布算法会导致了key分布不均匀,也就是通过哈希函数计算出来的哈希槽都是落在了一个桶里,这样的哈希分布算法是最不理想的,最理想的情况下是 保证每个key都落在不同的哈希槽里【哈希槽>key】 实际存储的哈希存储设计 1)一般来讲,哈希分布函数确定后,可调控的因子就是这个填充因子 如果填充因子大于你卡的某个阈值,那么你就要做哈希结构迁移工作,迁移到一个更大的哈希槽中。而对用同用的这种哈希分布 函数

【深度学习基础】从零开始的炼丹生活07——深度模型中的优化

喜夏-厌秋 提交于 2020-02-04 07:09:35
往期回顾: 04——从传统机器学习走向深度学习 05——深度前馈网络、神经网络概述 06——深度学习中的正则化 介绍了神经网络的基本构件和正则化策略之后,学习一下深度模型中的优化。先说一说传统的纯优化与机器学习中的优化的异同,再介绍一下神经网络中优化的挑战,最后说说基本的优化算法。(参考《深度学习》第8章) 一、机器学习中的优化 传统的优化方法是纯优化最小化目标 J 本身,而机器学习的优化是间接作用的。在机器学习问题中,我们关注某些性能度量 P ,其定义于测试集上并且是不可解的。因此机器学习希望通过降低代价函数 J(θ)来间接提高 P 。 1. 经验风险最小化 机器学习算法的目标是降低期望泛化误差 J ∗ ( θ ) = E ( x , y ) ∼ p d a t a L ( f ( x ; θ ) , y ) J^*(\theta)=\mathbb E_{(\bold {x,y})\sim p_{data}}L(f(x;\theta),y) J ∗ ( θ ) = E ( x , y ) ∼ p d a t a ​ ​ L ( f ( x ; θ ) , y ) 这被称为 风险 。此时数据取自真实的潜在分布,然而,我们遇到的问题通常并不清楚真实分布,只知道训练集中的样本。 我们将机器学习中的优化转换回一个优化问题的最简单方法就是最小化训练集上的期望损失,以训练集上的经验分布 p