迭代模型

机器学习(4)之Logistic回归

我只是一个虾纸丫 提交于 2019-12-10 04:23:54
机器学习(4)之Logistic回归 1. 算法推导  与之前学过的梯度下降等不同,Logistic回归是一类分类问题,而前者是回归问题。回归问题中,尝试预测的变量y是连续的变量,而在分类问题中,y是一组离散的,比如y只能取{0,1}。   假设一组样本为这样如图所示,如果需要用线性回归来拟合这些样本,匹配效果会很不好。对于这种y值只有{0,1}这种情况的,可以使用分类方法进行。 假设 ,且使得 其中定义Logistic函数(又名sigmoid函数): 下图是Logistic函数g(z)的分布曲线,当z大时候g(z)趋向1,当z小的时候g(z)趋向0,z=0时候g(z)=0.5,因此将g(z)控制在{0,1}之间。其他的g(z)函数只要是在{0,1}之间就同样可以,但是后续的章节会讲到,现在所使用的sigmoid函数是最常用的 假设给定x以为参数的y=1和y=0的概率: 可以简写成: 假设m个训练样本都是独立的,那么θ的似然函数可以写成: 对L(θ)求解对数最大似然值: 为了使似然性最大化,类似于线性回归使用梯度下降的方法,求对数似然性对 的偏导,即:   注意:之前的梯度下降算法的公式为 。这是是梯度上升,Θ:=Θ的含义就是前后两次迭代(或者说前后两个样本)的变化值为l(Θ)的导数。 则 即类似上节课的随机梯度上升算法,形式上和线性回归是相同的,只是符号相反,

Apache Flink:特性、概念、组件栈、架构及原理分析

試著忘記壹切 提交于 2019-12-07 20:18:36
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtime),提供支持流处理和批处理两种类型应用的功能。现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型,因为他们它们所提供的SLA是完全不相同的:流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。例如,实现批处理的开源方案有MapReduce、Tez、Crunch、Spark,实现流处理的开源方案有Samza、Storm。 Flink在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。基于同一个Flink运行时(Flink Runtime),分别提供了流处理和批处理API,而这两种API也是实现上层面向流处理、批处理类型应用框架的基础。 基本特性 关于Flink所支持的特性,我这里只是通过分类的方式简单做一下梳理,涉及到具体的一些概念及其原理会在后面的部分做详细说明。 流处理特性 支持高吞吐、低延迟、高性能的流处理

大型应用软件设计实验——第二轮迭代

穿精又带淫゛_ 提交于 2019-12-06 21:40:37
概述   经过第二轮迭代,我们组在第一轮迭代的基础上进行了第二轮迭代。在本轮迭代中,我们重新进行了地图和副本的设计,实现了游戏中的大部分UI,同时实现了角色的属性值。 迭代过程   在经过第一轮迭代后,我们对地图的制作有了一定的经验,也对第一轮迭代制作出的地图不是很满意。在网上找到一些新的素材后,我们决定重新制作游戏的地图,并同步进行游戏UI的制作。 地图制作   重新制作后游戏共四个地图,其中名为town的场景中地图为游戏的城镇地图,其他三个scene中为副本地图。重新制作后的地图比原先的地图有了层次感,使用2D的tilemap制作出了3D的z轴效果。   三个副本的scene中还没有设置怪物,这将在第三轮迭代中完成。 UI制作   场景UI分为三个部分:游戏右上角的设置界面、游戏左上角的角色属性界面以及与游戏内NPC的交互界面。   右上角的设置界面实现了继续游戏、保存游戏、回主界面以及音量调节的功能。目前,在打开设置界面后,可通过继续游戏按钮关闭设置界面并继续游戏,按下回主界面按钮可回到开始菜单、拖动slider可调节游戏内的音量。至于保存游戏的功能,我们目前暂时使用Player.Pref()函数对部分数据进行了持久化保存处理,暂未完全实现保存游戏的功能,为之后完全实现游戏存档做铺垫,我们考虑在第三轮迭代过程中在数据持久化的基础上实现存档。  

【论文阅读笔记】DSSD:Deconvolutionl Single Shot Detector

南楼画角 提交于 2019-12-06 21:34:26
论文地址: DSSD:Deconvolutionl Single Shot Detector 论文时间:2017.01发布,无修改 全文概括    DSSD 相对于 SSD 增加部件的思路和 FPN 相似,都是 增加一个 top-down 路径,同时增加一个 skip-connection 横向连接 。在预测时,DSSD 研究了几个 预测模块 (PM,Prediction Module) ,发现在输出的 featupre map 与最终的回归器和分类器之间添加一个 残差模块 会使得检测效果变好。   作者认为,DSSD 添加的 deconvolutional 层能给检测器增加上下文信息,这能让小物体的检测提高不少( 尤其是对于具有特定背景联系的类别 )。   在VOC2007和VOC2012数据集上,当输入图片较小时,如300或321,DSSD和SSD是不如当时最先进的检测算法 R-FCN的,在V2007上,DSSD513 的mAP为81.5,SSD513 的mAP为80.6, R-FCN 的mAP为80.5,DSSD321 的mAP为78.6,SSD321 的mAP为77.1;在COCO数据集上,即使输入图片较小,DSSD的效果也由于R-FCN;在COCO数据集上,DSSD513 达到33.2,R-FCN为29.9; 模型介绍   增加目标的上下文信息,能对小目标的检测提供帮助

卡尔曼滤波

泪湿孤枕 提交于 2019-12-06 14:41:04
卡尔曼滤波的基本思想是,给定一个假设的合理期望值后,结合系统历史的测量情况下,为系统建立当前的测量模型,是一个概率最大化预测。结合历史测量数据并不是保留了漫长的历史数据后给出的结果,而是在系统迭代更新只保留最近的估计模型供下一次迭代使用,但是最近的估计模型都是跟前面的数据有一定的关系,是前面数据的不断迭代实现的预测结果。单就看当时的结果的话,只与上一次模型的预测结果有关,这样的思想简化了计算机的计算能力。卡尔曼滤波的核心是信息融合,包括系统受到的干扰及测量传感器的噪声。根据这些信号预测当前的状态模型,说白了就是一个估计其,下面是它的原理: 对于离散线性时不变系统: 来源: https://www.cnblogs.com/fuzhuoxin/p/11983165.html

100天搞定机器学习|Day57 Adaboost知识手册(理论篇)

允我心安 提交于 2019-12-06 12:18:53
Boosting算法 Boosting是一种用来提高弱分类器准确度的算法,是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$\beta_m$就是弱学习在强分类器中所占比重,$P$是所有$\alpha_m$和$\beta_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ 用下面的GIF看起来会更加生动 Adaboost基本概念 AdaBoost是典型的Boosting算法,属于Boosting家族的一员。 对于AdaBoost,我们要搞清楚两点: 1、每一次迭代的弱学习$h(x;a_m)$有何不一样,如何学习? 2、弱分类器权值$\beta_m$如何确定

100天搞定机器学习|Day57 Adaboost知识手册(理论篇)

冷暖自知 提交于 2019-12-06 12:18:36
Boosting算法 Boosting是一种用来提高弱分类器准确度的算法,是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$\beta_m$就是弱学习在强分类器中所占比重,$P$是所有$\alpha_m$和$\beta_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ 用下面的GIF看起来会更加生动 Adaboost基本概念 AdaBoost是典型的Boosting算法,属于Boosting家族的一员。 对于AdaBoost,我们要搞清楚两点: 1、每一次迭代的弱学习$h(x;a_m)$有何不一样,如何学习? 2、弱分类器权值$\beta_m$如何确定

迭代模型

无人久伴 提交于 2019-12-05 22:58:02
迭代模型是RUP推荐的周期模型。被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。( 参考文章 参考文章 )也就是对产品开发的每个活动、阶段或子阶段进行迭代。 迭代模型 RUP中的软件生命周期在时间上被分解为 四个顺序的阶段 ,分别是:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。每个阶段结束于一个主要的里程碑(Major Milestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。( 参考文章 ) 初始阶段 初始阶段的目标是为系统建立商业案例并确定项目的边界。为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。初始阶段结束时是第一个重要的里程碑:生命周期目标(Lifecycle Objective)里程碑。生命周期目标里程碑评价项目基本的生存能力。 细化阶段 细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划

PL真有意思(四):控制流

旧巷老猫 提交于 2019-12-05 16:57:04
前言 对大多数计算模型而言,顺序都是基本的东西,它确定了为完成所期望的某种工作,什么事情应该最先做,什么事应该随后做,我们可以将语言规定顺序的机制分为几个类别: 顺序执行 选择 迭代 过程抽象 递归 并发 异常处理和推断 非确定性 对于不同类别的语言对不同类别的控制流的重要性也不尽相同,比如顺序执行相比于函数式对于命令式则更加重要。而命令式中更倾向用迭代,函数则更强调递归 表达式求值 在讨论控制流之前先讨论下表达式的问题,先明确两个概念:运算符通常是指那些采用特殊语法形式的内部函数(比如+-*/等),运算对象指的是运算符的参数(如2+3,2和3就是运算对象),那么运算符和运算对象的组合就是表达式。一般根据运算符出现的位置(相对于运算对象而言),可以分为3类表示形式:前缀、中缀和后缀。比如Lisp就运用前缀语法: (+ 1 3 4 6) (* (+ 1 7) 8) 大多数命令式语言对二元运算符都使用中缀记法,而对一元运算符和其它函数使用前缀激发。但是像Lisp就全部统一使用中缀记法 优先级和结合性 大多数程序设计语言都提供丰富的内部算术。在用中缀方式(没有括号)写出就可能出现歧义。所以就需要优先级和结合性来解决歧义性,但是我觉得 妈的你写括号就完事儿了 而且不同语言的优先级和结合性也不尽相同 赋值 在纯函数式语言中,程序的基本组成部分是表达式,计算也仅是对表达式求值

100天搞定机器学习|Day57 Adaboost知识手册(理论篇)

丶灬走出姿态 提交于 2019-12-05 12:16:57
Boosting算法 Boosting是一种用来提高弱分类器准确度的算法,是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$\beta_m$就是弱学习在强分类器中所占比重,$P$是所有$\alpha_m$和$\beta_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ 用下面的GIF看起来会更加生动 Adaboost基本概念 AdaBoost是典型的Boosting算法,属于Boosting家族的一员。 对于AdaBoost,我们要搞清楚两点: 1、每一次迭代的弱学习$h(x;a_m)$有何不一样,如何学习? 2、弱分类器权值$\beta_m$如何确定