
机器学习
文章平均质量分 81
包括神经网络原理和matlab仿真
才大难为用
我不懒
展开
-
机器学习 之 最大熵模型
最大熵模型最大熵模型(Maximum Entropy Model,以下简称MaxEnt),最大熵模型是什么意思呢?熵,最初是一个热力学的概念。表示的是混乱的程度,熵越高,表示越混乱;熵越低,表示越整齐,越有规律。宇宙中的事物都有自发变得更混乱的倾向,也就是说熵会不断增加,这就是 熵增原理 。例如一根线会折叠穿插越来越乱,一股烟最终会弥漫到整个瓶子,或者说熵不断增大。在历史的发展中,熵的概念进入了很多学科的视野。上世纪40年代,香农首先在信息论中引入了信息熵的概念。这里信息熵用来表示随机变量不确定度的度原创 2021-02-07 23:53:53 · 781 阅读 · 0 评论 -
机器学习 之 RBF
回忆一下普通BP网络,每个节点只是简单加上,然后一个激活函数。而RBF网络,是所有的取平方和开根,径向基函数实际上就是欧氏距离。任意一个满足Φ(x)=Φ(‖x‖)特性的函数Φ都叫做径向基函数,标准的一般使用欧氏距离(也叫做欧式径向基函数),尽管其他距离函数也是可以的。最常用的径向基函数是高斯核函数 ,形式为 k(∣∣x−xc∣∣)=e−∣∣x−xc∣∣2/(2∗σ)2k(||x-xc||)=e^{- ||x-xc||^2/(2*σ)^2 }k(∣∣x−xc∣∣)=e−∣∣x−xc∣∣2/(2∗σ)2其中原创 2020-11-05 16:36:05 · 637 阅读 · 0 评论 -
机器学习 之 Boosting
集成学习是通过训练弱干个弱学习器,并通过一定的结合策略,从而形成一个强学习器。有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)等。同质(homogeneous)的,即集成中仅包含同种类型的一个体学习器,像“决策树集成”中就仅包含决策树,“神经网络集成”中就全是神经网络。同质集成中的个体学习器又称为基学习器(base learner),相应的学习算法也被称为基学习算法(base learning algorith原创 2020-11-03 15:24:31 · 1217 阅读 · 0 评论 -
机器学习 之 EM算法
EM(Expectation-Maximum)算法也称期望最大化算法EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断等等。...原创 2020-10-30 16:17:33 · 389 阅读 · 0 评论 -
机器学习 之 图模型
图模型是用来解决,例如一张图片要么是0或9,但一个单词有名词或动词两种类型,图模型就是解决这个的。概率图模型(简称图模型),PGM。贝叶斯网络是有向图模型,CPD,条件概率分布。当然是DAG,有向无环图。很明显,最好都是独立的。例如,如果已观察到Intelligence,那么SAT与Grade是无关的,独立的。马尔可夫网络:无向图模型在马尔可夫图中,如果节点A和B之间没有路径能使得该路径上的所有节点都被观察到(只要有一个节点是未知节点),那么A和B就是相互独立的。例如用图模型原创 2020-10-30 16:07:05 · 2238 阅读 · 0 评论 -
机器学习 之PCA(主成分分析)与拉格朗日乘子
PCA能做的事其实很有限,那就是:降维。为什要降维呢?很明显,数据中有些内容没有价值,这些内容的存在会影响算法的性能,和准确性。看这两个图,就说明了降维的意义,越降维,维度就会越有意义。这样只取x2的值(投影),就从二维降维到了一维。主成分分析可以让数据的投影到那些数据分布尽可能分散(信息最大)的平面上,比如上图的y1,从而忽视y2的作用,进而达到降维的目的。说是降维,实际上就是坐标变换+去掉一些坐标,降维函数实际上一个WWW就可以了。我们说数据尽可能分散(信息最大化),体现在矩阵上就是方差很大,原创 2020-10-30 11:16:31 · 1695 阅读 · 0 评论 -
机器学习 之 K均值聚类
聚类分析是一种无监督学习技术(常见的无监督学习还有密度估计、异常检测等),可以在事先不知道正确结果(即无类标或预期输出值)的情况下,发现数据本身所蕴含的结构信息。其目标是发现数据中自然形成的分组,使得每个簇内样本的相似性大于其他簇内样本的相似性。聚类的商业领域应用包括:按照不同主题对文档、音乐、电影进行分组,或基于常见的购买行为,发现有相同兴趣爱好的顾客,并以此构建推荐引擎。性能度量大致分为两类:一类是将聚类结果与某种参考模型(例如将某领域专家给出的分类结果作为参考模型)进行比较,称为外部指标;另一类是原创 2020-10-23 11:32:23 · 315 阅读 · 0 评论 -
机器学习 之 逻辑回归(Logistic)
Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。Logistic 分布是一种连续型的概率分布,其分布函数和密度函数分别为:这个函数比较符合实际,例如蝗虫的增长速度,员工自杀率等。Logistic 分布的形状与正态分布的形状相似,但是 Logistic 分布的尾部更长,所以我们可以使用 Logistic 分布来建模比正态分布具有更长尾部和更高波峰的数据分布。在深度学习中常用到的 Sigmoid 函数就是 Logistic 的分布函数在μ=0,r=1\mu=0,原创 2020-10-22 23:24:23 · 4383 阅读 · 0 评论 -
机器学习 之 作业3
实际上就是在求朴素贝叶斯的参数估计而已。XXX连续的情况P(Xi∣Yi,θ)=∏k=1KN(Yi∣μR,ΣR)I{yi=k}P(X_i|Y_i,\theta)=\prod^K_{k=1}N(Y_i|\mu_R,\Sigma_R)^{I\{y_i=k\}}P(Xi∣Yi,θ)=∏k=1KN(Yi∣μR,ΣR)I{yi=k}仅仅是在说明是相互独立的而已,下面也是在说相互独立而已,这里只是在体现相互独立性。什么意思呢?实际上,期望就是期望,我们不是要求它特定值,而是借助求它最大值的时候,求原创 2020-10-22 20:31:59 · 169 阅读 · 0 评论 -
机器学习 之 决策树
决策树是一种机器学习的方法。决策树的生成算法有ID3, C4.5和C5.0等。就是这么一个东西,但这种东西是自动生成的,如何生成这个,就是各种算法了。这是有监督学习。监管学习就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已知,非监督学习就是分类未知。所以决策树的生成主要分以下两步:节点的分裂:一般当一个节点所代表的属性无法给出判断时(毕竟最后是要分类的,如果能区分的话,那就到此为止了),则选择将这一节点分成2个子节点(如不是二叉树的情况会分成n个子节点)阈值的确定:选择适原创 2020-10-20 17:53:19 · 350 阅读 · 0 评论 -
机器学习 之 朴素贝叶斯与生成,判别模型,回归与分类
生成模型估计的是联合概率分布,然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。生成方法关心的是给定输入x产生输出y的生成关系。判别模型估计的是条件概率分布,有数据直接学得决策函数P(X)或者条件概率分布P(Y|X)作为预测的模型。判别式方法关心的是给定输入X,应该预测什么样的输出Y(判别给出的Y对不对)回归与分类相对w\textbf ww是随机变量,为什么呢?因为我们根本不知道它的真实值,所以我们用概率分布P(w)P(\textbf w)P(w原创 2020-10-14 09:07:49 · 1287 阅读 · 0 评论 -
机器学习 之 K近邻(KNN),各种距离(范数)
在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。(这就类似于现实生活中少数服从多数的思想)比如k怎么确定的,k为多少效果最好呢?所谓的最近邻又是如何来判断给定呢?如果我们选取较小的k值,那么就会意味着我们的整体模型会变得复杂,容易发生过拟合!(容易被噪声占据优势)如果我们选取较大的k值,就相当于用较大邻域中的训练数据进行预测,这时与输入实例较远的(不相似)训练实例也会对预测起作用,使预测发生错误,k值的增大意味着整体模型变得简单。不解释。k值既不能原创 2020-10-07 13:59:18 · 1102 阅读 · 0 评论 -
机器学习 之 ROC曲线,混淆矩阵
TP true positiveFP false positiveTNFNFPR=FP()所有负样本FPR=\frac{FP()}{所有负样本}FPR=所有负样本FP()#代表数字TPR=#TP(判断正确的正样本)所有正样本TPR=\frac{ \# TP(判断正确的正样本)}{所有正样本}TPR=所有正样本#TP(判断正确的正样本)TPR也叫召回率Precission=#TPTP+FPPrecission=\frac{\# TP}{TP+FP}Precission=TP+FP#TP原创 2020-10-06 16:40:43 · 3406 阅读 · 0 评论 -
机器学习 之 作业2
作业 1: 线性回归模型的极大似然估计给了普通数据D,普通高斯模型,最大似然估计,好做啊1. E(wMLE)E(\textbf w_{MLE})E(wMLE)w=(XTX)−1XTyE(w)=1dITw=1dIT(XTX)−1XTy\textbf w=(\textbf X^T\textbf X)^{-1}\textbf X^T\textbf y\\E(\textbf w)=\frac{1}{d}\textbf I^T\textbf w\\=\frac{1}{d}\textbf I^T(\text原创 2020-10-05 00:30:16 · 163 阅读 · 0 评论 -
机器学习 之 贝叶斯估计与范数
每日小常识范数,是具有“长度”概念的函数。欧式范数,实际上是l2l_2l2-范数∣∣x∣∣=32+(−2)2+12=3.742||x||=\sqrt{3^2+(-2)^2+1^2}=3.742∣∣x∣∣=32+(−2)2+12=3.742lpl_plp-范数定义为∣∣x∣∣p=p∑i∣xi∣p||x||_p=^p\sqrt{\sum_i|x_i|^p}∣∣x∣∣p=pi∑∣xi∣p例如l1l_1l1-范数定义为lpl_plp-范数定义为∣∣x∣∣p=∑i∣xi∣||x||_原创 2020-10-04 21:30:34 · 442 阅读 · 0 评论 -
机器学习 之 作业1
作业 1: 经验风险最小化 vs. 结构风险最小化[1] 解释:期望风险最小,经验风险最小化和结构风险最小化;那么如果想知道模型对训练样本中所有的样本的预测能力,那就是经验风险,经验风险是对训练集中的所有样本点损失函数的总和最小化。经验风险越小说明模型对训练集的拟合程度越好。我们知道未知的样本数据的数量是不容易确定的,所以就没有办法用所有样本损失函数的总和的最小化这个方法,那么用期望来衡量这个模型对所有的样本(包含未知的样本和已知的训练样本)预测能力。这就是期望风险,期望风险表示的是全局的概念,表示的原创 2020-10-03 00:10:17 · 277 阅读 · 0 评论 -
机器学习 之 最大后验估计(MAP),交叉熵
占坑原创 2020-09-20 21:59:05 · 2052 阅读 · 0 评论 -
机器学习 之 最大似然估计(高斯分布),三种风险
前面用高数和线代做。这回用概论做。将误差显示表现出来。实际上的数据我们可以这样表示出来:t=wx+b+εt=wx+b+\varepsilont=wx+b+ε其中ε\varepsilonε是一个服从正态分布的误差,这样的话,ttt就符合N(y,δ2)N(y, \delta^2)N(y,δ2)的分布,很合理吧。但是ttt本身不是独立的,ttt随着xxx的变化有一个趋势,这就是我们建模的意义,如果完全独立的话,没有任何关系,我们也没有研究的必要啊。实际上,给定www,ttt是独立的,没有此条件则不成立。原创 2020-09-19 22:27:08 · 1110 阅读 · 0 评论 -
机器学习 之 最小二乘法,各种损失函数
XXTXX^TXXT,n∗nn*nn∗n的矩阵,xiTxjx_i^Tx_jxiTxj,相似度KijK_{ij}Kij,判断两个数据的相似情况。xTxx^TxxTx,关联程度arg是参数w∗=argmin12∑i=1n(wTxi−yi)2=12(Xw−y)T(Xw−y)w^*=argmin\frac{1}{2}\sum_{i=1}^n(w^Tx_i-y_i)^2=\frac{1}{2}(X_w-y)^T(X_w-y)w∗=argmin21i=1∑n(wTxi−yi)2=21(Xw−y)原创 2020-09-18 14:51:49 · 7395 阅读 · 1 评论 -
机器学习 之 SVM
支持向量机(support vector machines, SVM)是一种二分类模型,感知机 (perceptron):感知机是神经网络(深度学习)的起源算法,感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别,分别是+和-,属于判别模型。假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面。如果是非线性可分的数据,则最后无法获得超平面,什么是线性可分,二维就是直线可分,三维就是面可分,四维就是。。。超平面,就是这样。假设超原创 2020-08-21 20:34:45 · 764 阅读 · 0 评论 -
神经网络之GAN
GAN中包含两个模型:生成模型(Generative Model)和判别模型(Discriminative Model)。生成模型通过反卷积神经网络将随机输入值转化为图像。判别模型是一个分类器,它判断给定的图片到底是来自数据集的真实图像,还是人工创建的假图像。这基本上就是一个表现为卷积神经网络(CNN)形式的二元分类器。GAN可以用任何形式的generator和discriminator,不一定非得使用神经网络。在数次训练迭代的历程中,判别器和生成器的的权重和偏差都是通过反向传播训练的。判别原创 2020-06-29 23:07:03 · 4490 阅读 · 1 评论 -
神经网络之集成分类
1.集成学习归属于机器学习,他是一种「训练思路」,并不是某种具体的方法或者算法。2.集成学习会挑选一些简单的基础模型进行组装,组装这些基础模型的思路主要有 2 种方法: bagging(bootstrap aggregating的缩写,也称作“套袋法”) boosting 3.Bagging 的核心思路是——民主。Bagging 的思路是所有基础模型都一致对...原创 2020-04-24 16:49:48 · 3408 阅读 · 1 评论 -
Matlab实现图像识别(十)
接下来就是参数选择的问题。什么是参数选择的问题呢?例如如果你把720x720的图片放进去,隐藏层都几个G了,这个自然是不行的。在本次实验中,我一开始用了5000个隐藏节点,结果,训练一次这个隐藏层就需要1分钟的时间,自然是不可以的,因为我还要训练一万次,没法调Bug啊,这个时间绝对不行。因此图像的大小选择是十分慎重的,因为如果只是28x28像素的话,总的也才784个节点,如果是60x80的话...原创 2019-12-12 14:13:46 · 1642 阅读 · 3 评论 -
Matlab实现图像识别(九)
随机挑选50个物体,每个物体挑选20张图片。imgs, labels = img_pick(path)其中,imgs为50*20*28*28,label就是50*101了,那么,预处理就在img_pick中做。function [imgs, labels] = img_pick(path) imgs = zeros(50, 20, 28, 28); labels=...原创 2019-12-05 11:10:21 · 4535 阅读 · 2 评论 -
Matlab实现图像识别(八)
这节实现图像的预处理。在最开始的时候,我们仅仅是把图像进行灰度化,并为了训练效率,强行缩小了图像,导致损失了许多图像信息,实际上,有更多的方法来保存这些信息。现在流行的图像预处理算法非常多,例如图像反转,灰度线性变换,非线性变换,直方图均衡化,线性平滑滤波器,中值滤波器,Sobel算子和拉普拉斯对图像锐化,梯度算子检测边缘,LOG算子检测边缘,Canny算子检测边缘,边界跟踪(bwtraceb...原创 2019-12-02 08:22:33 · 4301 阅读 · 0 评论 -
Matlab实现图像识别(七)
分完数据,我们要实现BP神经网络的运算和测试。既然BP神经网络已经设计好了,那么现在制作测试代码,一共选择50个物体,每个物体随机挑选20张图片,总共测试1000次,看其正确率。% 测试代码path = 'test_set';namelist = dir(path);res = 0;for i = 1:50 % 挑出50个物体 k = rand(101); % 随机选择一个...原创 2019-11-29 09:24:24 · 1779 阅读 · 1 评论 -
Matlab实现图像识别(六)
关于反向传播我实在讲不透,自己把公式推算一遍比较好。既然已经把BP成功搭建起来了,那么接下来做什么呢?接下来把数据集分割一下,一般来说,训练集数据集分割比是2:1的样子差不多。我们仍然用matlab实现分割,既然我们已经知道了如何读取图像,那么存入图像也是简单的:imwrite(img, path);我们可以把前2/3作为训练集放到一个文件夹,后1/3作为测试集放入另一个文件夹。新...原创 2019-11-29 08:09:40 · 2394 阅读 · 0 评论 -
Matlab实现图像识别(五)
先实现单个更新,得出结果之后,再实现批量更新。后向传播算法为:w = w - a*de/dw;其中,w就是那个参数,e代表误差,a是一个步长,乘以这个导数就变成了实际的一小段,减去它就是了。这个导数这么算:de/dw = de/dy2 * dy2/dy1 * dy1/dw其中,e = 1/2 * sum((label - output).^2); 其中,label和output都是101...原创 2019-11-29 08:09:02 · 890 阅读 · 0 评论 -
Matlab实现图像识别(五)
先实现单个更新,得出结果之后,再实现批量更新。后向传播算法为:w = w - a*de/dw;其中,w就是那个参数,e代表误差,a是一个步长,乘以这个导数就变成了实际的一小段,减去它就是了。这个导数这么算:de/dw = de/dy2 * dy2/dy1 * dy1/dw其中,e = 1/2 * sum((label - output).^2); 其中,label和output都是101...原创 2019-11-28 23:20:28 · 1769 阅读 · 1 评论 -
Matlab实现图像识别(四)
这节实现反向传播。首先当一个图片输出结果output之后,将其与label相减取绝对值,这个 就是误差,然后对每一个w求出偏导,乘以一个步长再用相应的w减去它。在每一轮循环,随机选几十个物品,然后每个物品随机选四五张图像,总共就有几百张图像,作为一轮,然后重复几千轮,这样就训练好了。例如我们可以随机选50个物体,每个物体10张图片,代码如下:path = '101_ObjectCa...原创 2019-11-28 14:12:33 · 3233 阅读 · 4 评论 -
Matlab实现图像识别(三)
这节实现一个简单的神经网络。首先要有一个60*80=4800的输入层,我们将img进行reshape就可以得到了。input = reshape(img, 4800, 1);这样我们就将img转化成四千八百行,1列的一个列向量 。但其实这个并不是列向量,因为img每一个单元都有3个的分量,需要通过im2double来转化:input = im2double(input);...原创 2019-11-28 14:11:42 · 5520 阅读 · 1 评论 -
Matlab实现图像识别(二)
这节要处理图像到统一标准。首先我们已经读取出来图像了,我们如何对它进行处理呢?首先,我们先对它进行灰度转化,然后放缩到固定尺寸即可,至于卷积池化什么的先留到以后再说,现在先实现简单的BP神经网络。如何进行灰度转化呢?用rgb2gray即可实现:img = imread('101_ObjectCategories\accordion\image_0001.jpg');img = rgb2...原创 2019-11-28 14:10:50 · 5062 阅读 · 1 评论 -
Matlab实现图像识别(一)
我们采用的是101_ObjectCategories这个数据集,这个数据集是加州什么理工的一个数据集,里面有101个文件夹,每个文件夹的名字是一个物体,文件夹内有几十张上百张这个物体的图像,每个图像的大小不尽相同,总共才100多MB,比较好训练,有一个同类的数据集,它有200多个物体,但是有几个G,所以不太适合了。相对于MNIST数据集来说,MNIST数据集显得更难读取了,因此也不选用MNIST数...原创 2019-11-28 14:09:29 · 17540 阅读 · 3 评论