PRML读书笔记_绪论曲线拟合部分】的更多相关文章

一.最小化误差函数拟合 正则化( regularization )技术涉及到给误差函数增加一个惩罚项,使得系数不会达到很大的值.这种惩罚项最简单的形式采用所有系数的平方和的形式.这推导出了误差函数的修改后的形式: 在效果上, λ 控制了模型的复杂性,因此决定了过拟合的程度. 二.贝叶斯曲线拟合 1.正态分布( normal distribution )或者高斯分布( Gaussian distribution ) 对于一元实值变量 x ,高斯分布被定义为: 它由两个参数控制:\(μ\) ,被叫做…
一.基本名词 泛化(generalization) 训练集所训练的模型对新数据的适用程度. 监督学习(supervised learning) 训练数据的样本包含输入向量以及对应的目标向量. 分类( classification ):给每个输入向量分配到有限数量离散标签中的一个. 回归( regression ):输出由一个或者多个连续变量组成. 无监督学习(unsupervised learning) 训练数据由一组输入向量 x 组成,没有任何对应的目标值. 聚类(clustering):发现…
Linear Basis Function Models 线性模型的一个关键属性是它是参数的一个线性函数,形式如下: w是参数,x可以是原始的数据,也可以是关于原始数据的一个函数值,这个函数就叫basis function,记作φ(x),于是线性模型可以表示成: w0看着难受,定义一个函数φ0(x) = 1, 模型的形式再一次简化成: 以上就是线性模型的一般形式.basis function有很多选择,例如Gaussian.sigmoid.tanh (tanh(x) = 2 * sigmoid(…
一个例子: 两个盒子: 一个红色:2个苹果,6个橘子; 一个蓝色:3个苹果,1个橘子; 如下图: 现在假设随机选取1个盒子,从中.取一个水果,观察它是属于哪一种水果之后,我们把它从原来的盒子中替换掉.重复多次. 假设我们40%的概率选到红盒子,60%的概率选到蓝盒子.并且当我们把取出的水果拿掉时,选择盒子中任何一个水果还是等可能的. 问题: 1.整个过程中,取得苹果的概率有多大? 2.假设已经去的了一个橘子的情况下,这个橘子来自蓝盒子的可能性有多大? (这里,推荐一篇好文:数学之美番外篇:平凡而…
书中给出了一个典型的曲线拟合的例子,给定一定量的x以及对应的t值,要你判断新的x对应的t值多少. 任务就是要我们去发现潜在的曲线方程:sin(2πx) 这时就需要概率论的帮忙,对于这种不确定给t赋何值的情况,它可以通过一种精确和量化的方式来提供一种框架, 而对于决策理论,为了根据适当的度量方式来获取最优的预测,它允许我们挖掘一种概率模型. 下面对于上面的例子展开讨论: 假设曲线的多项式方程为: 系数怎么求? 通过把多项式去拟合训练数据,我们需要设定一个error function,通过最小化这个…
什么是模式识别(Pattern Recognition)? 按照Bishop的定义,模式识别就是用机器学习的算法从数据中挖掘出有用的pattern. 人们很早就开始学习如何从大量的数据中发现隐藏在背后的pattern.例如,16世纪的Kepler从他的老师Tycho搜集的大量有关于行星运动的数据中发现了天体运行的规律,并直接导致了牛顿经典力学的诞生.然而,这种依赖于人类经验的.启发式的模式识别过程很难复制到其他的领域中.例如手写数字的识别.这就需要机器学习的技术了.(顺便提一下,开普勒定律在物理…
完整项目见:Github 完整项目中最终使用了ResNet进行分类,而卷积版本较本篇中结构为了提升训练效果也略有改动 本节主要介绍进阶的卷积神经网络设计相关,数据读入以及增强在下一节再与介绍 网络相关参数 输入24*24的图片 卷积->relu激活->最大池化->标准化 卷积->relu激活->标准化->最大池化 全连接:reshape尺寸->384 全连接:192->10 SoftMax 网络实现 git clone https://github.com/…
数据读取部分实现 文中采用了tensorflow的从文件直接读取数据的方式,逻辑流程如下, 实现如下, # Author : Hellcat # Time : 2017/12/9 import os import tensorflow as tf IMAGE_SIZE = 24 NUM_CLASSES = 10 NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN = 50000 NUM_EXAMPLES_PER_EPOCH_FOR_EVAL = 10000 def read_cif…
本章开始学习第一个有监督学习模型--线性回归模型."线性"在这里的含义仅限定了模型必须是参数的线性函数.而正如我们接下来要看到的,线性回归模型可以是输入变量\(x\)的非线性函数. 书中首先对回归问题给出了一个简短的不那么正式的定义: Given a training data set comprising \(N\) observations \(\{x_n\}\), where \(n = 1, ... , N\), together with corresponding targ…
“_”标识符 _ 本身就是一个特殊的标识符,被称为空白标识符.它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算. 包的概念 包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容.如同其它一些编程语言中的类库或命名空间的概念,每个 Go 文件都属于且仅属于一个包.一个包可以由许多以 .go 为扩…
2.1. Binary Variables 1. Bernoulli distribution, p(x = 1|µ) = µ 2.Binomial distribution + 3.beta distribution(Conjugate Prior of Bernoulli distribution) The parameters a and b are often called hyperparameters because they control the distribution of…
1.1. Example: Polynomial Curve Fitting 1. Movitate a number of concepts: (1) linear models: Functions which are linear in the unknow parameters. Polynomail is a linear model. For the Polynomail curve fitting problem, the models is : which is a linear…
x, a vector, and all vectors are assumed to be column vectors. M, denote matrices. xT, a row vcetor, T means transpose of a vector or matrix. (w1 , . . . , wm ), a row vector with m elements, and the corresponding column vector is written as w = (w1 …
熵 给定一个离散变量,我们观察它的每一个取值所包含的信息量的大小,因此,我们用来表示信息量的大小,概率分布为.当p(x)=1时,说明这个事件一定会发生,因此,它带给我的信息为0.(因为一定会发生,毫无悬念) 如果x和y独立无关,那么: 他们之间的关系为: (p(x)=1时,h(x)=0,负号为了确保h(x)为正,这里取2为底是随机的,可以取其他的正数(除了1)) 因此,对于所有x的取值,它的熵有: 注:,当遇到时, 这里插一段信息熵的解释: ———————————————————————————…
初体验: 概率论为我们提供了一个衡量和控制不确定性的统一的框架,也就是说计算出了一大堆的概率.那么,如何根据这些计算出的概率得到较好的结果,就是决策论要做的事情. 一个例子: 文中举了一个例子: 给定一个X射线图x,目标是如何判断这个病人是否得癌症(C1或C2).我们把它看作是一个二分类问题,根据bayes的概率理论模型,我们可以得到: 因此,就是的先验概率:(假设Ck表示患病,那么就表示普通人患病的概率) 则作为是后验概率. 假设,我们的目标是:在给定一个x的情况下,我们希望最小化误分类的概率…
维数灾难 给定如下分类问题: 其中x6和x7表示横轴和竖轴(即两个measurements),怎么分? 方法一(simple): 把整个图分成:16个格,当给定一个新的点的时候,就数他所在的格子中,哪种颜色的点最多,最多的点就是最有可能的. 如图: 显然,这种方法是有缺陷的: 例子给出的是2维的,那么3维的话,就是一个立体的空间,如下图所示: 因为我们生活在3维的世界里,所以我们很容易接受3维.比如,我们考虑一个在D维环境下,半径为1和半径为1-的球体的容积之差: 他们的差即为: volume…
在训练集上有个好的效果不见得在测试集中效果就好,因为可能存在过拟合(over-fitting)的问题. 如果训练集的数据质量很好,那我们只需对这些有效数据训练处一堆模型,或者对一个模型给定系列的参数值,然后再根据测试集进行验证,选择效果最好的即可: 大多数情况下,数据集大小是有限的或质量不高,那么需要有个第三测试集,用于测试选中的模型的评估. 为了构建好的模型,我们常常选用其中质量较高的数据拿来训练,这就存在一个问题就是测试集的数据质量变低,导致预测的效果由于noisy而导致性能较差. 这种解决…
模式识别领域主要关注的就是如何通过算法让计算机自动去发现数据中的规则,并利用这些规则来做一些有意义的事情,比如说,分类. 以数字识别为例,我们可以根据笔画规则启发式教学去解决,但这样效果并不理想. 我们一般的做法是: 1,统一尺寸; 2,简化色彩; 3,计算灰度平均值; 4,计算哈希值(生成指纹); 当有新的测试图片时,只需利用"汉明距离"来判断两张图片之间不同的数据位数量就可以了.这是最简单快速的方法.缺陷是如果图片上加几个字,就认不出来了.因此,它的最佳用途就是用来通过缩略图找原图…
为了培养一个机器学习领域专家那样的直觉,最好的办法就是,对你遇到的每一个机器学习问题,把所有的算法试个遍,直到有一天,你凭直觉就知道某些算法行不通.…
『TensorFlow』降噪自编码器设计  之前学习过的代码,又敲了一遍,新的收获也还是有的,因为这次注释写的比较详尽,所以再次记录一下,具体的相关知识查阅之前写的文章即可(见上面链接). # Author : Hellcat # Time : 2017/12/6 import numpy as np import sklearn.preprocessing as prep import tensorflow as tf from tensorflow.examples.tutorials.mn…
多层感知机 输入->线性变换->Relu激活->线性变换->Softmax分类 多层感知机将mnist的结果提升到了98%左右的水平 知识点 过拟合:采用dropout解决,本质是bagging方法,相当于集成学习,注意dropout训练时设置为0~1的小数,测试时设置为1,不需要关闭节点 学习率难以设定:Adagrad等自适应学习率方法 深层网络梯度弥散:Relu激活取代sigmoid激活,不过输出层仍然使用sigmoid激活 对于ReLU激活函数,常用截断正态分布,避免0梯度和…
如果你可视化CNN的各层级结构,你会发现里面的每一层神经元的激活态都对应了一种特定的信息,越是底层的,就越接近画面的纹理信息,如同物品的材质. 越是上层的,就越接近实际内容(能说出来是个什么东西的那些信息),如同物品的种类. 网络结构 卷积层->池化层->卷积层->池化层->全连接层->Softmax分类器 卷积层激活函数使用relu 卷积层relu激活,偏置项使用极小值初始化,防止Relu出现死亡节点 全连接层激活函数使用relu 池化层模式使用SAME,所以stride取…
1.大家听说Erlang,往往是因为其对高并发的良好支持.其实,Erlang的核心特征是容错,从某种程度上讲,并发只是容错这个约束下的一个副产品.容错是Erlang语言的DNA,也是和其他所有编程语言的本质区别所在. 2.从某种意义上讲,Erlang不仅是一门编程语言,更是一个系统平台.它不仅提供了开发阶段需要的支持,更提供了其他语言所没有的运行阶段的强大支持.其实,在静态检查和测试阶段发现的问题往往都是些“不那么有趣”的问题,那些逃逸出来的bug才是真正难对付的.特别是对于涉及并发和分布式的b…
Main(): 1. C++程序必须包含main()函数,操作系统通过调用main来运行C++程序. 2. main()的形参可以为空. 3. main函数的返回类型必须为int,返回给操作系统.int类型是一种内置函数(指由语言定义的类型). 4. main函数的返回值被用来指示状态.返回值0表明成功,非0的含义由系统定义,通常用来指出错误类型. 编译运行: 1. IDE(集成开发环境)集成的是编译器.程序创建和分析工具包. 2. Windows下编译运行.cpp文件: 2.1 编译器:GNU…
简单继承的例子: #include <iostream> #include <string> using namespace std; class CStudent { private: string name; string id; //学号 char gender; //性别,'F'代表女, 'M'代表男 int age; public: void PrintInfo(); void SetInfo( const string & name_,const string…
形式 返回值类型 operator 运算符(形参表) { …… } 运算符重载 (1)运算符重载的实质是函数重载(2)可以重载为普通函数,也可以重载为成员函数 class Complex { public: double real,imag; Complex( double r = 0.0, double i= 0.0 ):real(r),imag(i) { } Complex operator-(const Complex & c); }; Complex operator+( const C…
面向对象的程序设计方法 抽象:将某类客观事物共同特点(属性)归纳出来,形成一个数据结构(可以用多个变量描述事物的属性):将这类事物所能进行的行为也归纳出来,形成一个个函数,这些函数可以用来操作数据结构. 封装:通过某种语法形式,将数据结构和操作该数据结构的函数“捆绑”在一起,形成一个“ 类”,从而使得数据结构和操作该数据结构的算法呈现出显而易见的紧密关系. 从客观事物抽象出类 写一个程序,输入矩形的长和宽,输出面积和周长. 比如对于“矩形”这种东西,要用一个类来表示,该如何做“抽象”呢?矩形的属…
void * 函数指针和指向类成员的指针不能被赋给void * 字符串字面值常量 #include <iostream> using namespace std; void f() { char * p = "hello"; p[] = 'a'; } int main() { f(); ; } 书上说C++11不能接受,不过我分别试了gcc的3.4.5和7.2版本,编译都没有问题.当然了,要是这么写可就坑了,直接会core的 指针与const void f1(char *…
字符类型 #include <iostream> using namespace std; int main() { cout << << endl; cout << static_cast<) << endl; ; } 运行结果: 注意类型转换 再谈auto 1.在使用auto自动推断变量类型时,没有必要采用列表初始化“{}”的方式,而是直接用“=”就好了 2.在较小的作用域中建议优先使用auto template<class T&…
进程是操作系统运行程序的一个实例, 也是操作系统分配资源的单位. 在Linux环境中, 每个进程都有独立的进程空间, 以便对不同的进程进行隔离, 使之不会互相影响. atexit函数 #include <stdlib.h> int atexit(void (*function)(void)); atexit用于注册进程正常退出时的回调函数. 若注册了多个回调函数, 最后的调用顺序与注册顺序相反:类似于栈. 使用atexit注册的退出函数是在进程正常退出时, 才会被调用. 这里的正常退出是指,…