损失函数

手把手教你用GAN实现半监督学习

落爺英雄遲暮 提交于 2019-12-05 10:49:39
引言 本文主要介绍如何在tensorflow上仅使用200个带标签的mnist图像,实现在一万张测试图片上99%的测试精度,原理在于使用GAN做半监督学习。前文主要介绍一些原理部分,后文详细介绍代码及其实现原理。前文介绍比较简单,有基础的同学请掠过直接看第二部分,文章末尾给出了代码GitHub链接。对GAN不了解的同学可以查看微信公众号:机器学习算法全栈工程师 的GAN入门文章。 本博客中的代码最终以GitHub中的代码为准,GitHub链接在文章底部,另外,本文已投稿至微信公众号:机器学习算法全栈工程师,欢迎关注此公众号 1.监督,无监督,半监督学习介绍 在正式介绍实现半监督学习之前,我在这里首先介绍一下监督学习(supervised learning),半监督学习(semi-supervised learning)和无监督学习(unsupervised learning)的区别。监督学习是指在训练集中包含训练数据的标签(label),比如类别标签,位置标签等等。最普遍使用标签学习的是分类任务,对于分类任务,输入给网络训练样本(samples)的一些特征(feature)以及此样本对应的标签(label),通过神经网络拟合的方法,神经网络可以在特征和标签之间找到一个合适的映射关系(mapping),这样当训练完成后,输入给网络没有label的样本

GAN原理解析,公式推导与python实现

我们两清 提交于 2019-12-05 10:49:09
1-生成模型 1-1 生成模型与判别模型 1-2 为什么学习生成模型 1-3 生成模型原理似然原理 2-生成式对抗网络 2-1 生成式对抗网络工作原理 2-2 判别器的损失函数 2-3 生成器损失定义1minimax 2-4 生成器损失定义2Non-Saturating Game 2-5 第三种策略极大似然估计 2-5-1 KL 散度的定义 2-5-2 KL散度的推导 2-5-3 利用KL散度度量生成分布与真实分布的相似性 3-GAN实现 1-生成模型 1-1 生成模型与判别模型 生成式对抗网络,顾名思义就是生成模型嘛!那什么是生成模型呢?与判别模型有什么区别呢? 先来理解一下判别模型。 学过机器学习的人都知道,入门级的算法逻辑回归,最后的预测,是通过sigmoid函数: 生成一个0-1之间的数值,然后用某一阀值来做分类,我们称之为判别模型: 由数据直接学习,通过决策函数 Y = f ( X ) //--> 或者概率模型 P ( Y | X ) //--> 预测,判断类别的模型。 逻辑回归中的sigmoid函数就是判别函数。 而生成模型,则先学习出一个 联合概率密度分布 P ( X , Y ) //--> ,最后分类,预测的时候,使用条件概率公式 P ( Y | X ) = P ( X , Y ) P ( X ) //--> 来预测当前样本属于每一类的概率。 生成模型的核心

原始GAN网络Tensorflow实现MNIST图片生成(附详细注释)

折月煮酒 提交于 2019-12-05 10:43:38
原始GAN网络论文(非常经典)介绍: https://arxiv.org/pdf/1406.2661.pdf 数据集采用的是黑白图像数据集MNIST。话不多说,直接上代码: 1. 导入必要的库 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import numpy as np import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec #可视化库 import os 2. 权重初始化函数 # 权重初始化函数方法 def variable_init(size): in_dim = size[0] # 计算随机生成变量所服从的正态分布标准差 w_stddev = 1. / tf.sqrt(in_dim / 2.0) return tf.random_normal(shape=size, stddev=w_stddev) #从服从指定正太分布的数值中取出指定个数的值 3. 变量定义 # 定义输入矩阵的占位符,输入层单元为784,None批量大小的占位,X代表输入的真实图片。占位符的数值类型为32位浮点型 X = tf.placeholder(tf.float32, shape=[None,

TensorFlow-损失函数

此生再无相见时 提交于 2019-12-05 10:39:42
损失函数定义 损失函数(loss function),量化了分类器输出地结果(预测值)和我们期望的结果(标签)之间的差距。 在机器学习中, 损失函数(loss function) 也称cost function(代价函数),是用来 计算预测值和真实值的差距 。然后以loss function的最小值作为目标函数进行反向传播迭代计算模型中的参数,这个让loss function的值不断变小的过程称为优化。 损失函数分为 经验风险损失函数 和 结构风险损失函数 经验风险损失函数指预测结果和实际结果的差别 结构风险损失函数是指经验风险损失函数加上正则项 设总有N个样本的样本集为$(X,Y)=(x_i,y_i)$,那么总的损失函数为$$L = sum_{i=1}^n l(y_i,f(x_i)) $$ 其中 $y_i,i∈[1,N]$为样本$i$的真实值,$f(x_i),i∈[1,N]$为样本$i$的预测值, $f()$为分类或者回归函数。 一般来说,对于分类或者回归模型进行评估时,需要使得模型在训练数据上似的损失函数值最小,即使得经验风险函数(Empirical risk)最小化,但是如果只考虑经验风险,容易出现过拟合,因此还需要考虑模型的泛化性,一般常用的方法就是在目标函数中加上正则项,有损失项(loss term)加上正则项(regularization term)构成结构风险

生成对抗网络(DCGAN, LSGAN, WGAN, WGAN-GP, SNGAN, RSGAN)TensorFlow实现

↘锁芯ラ 提交于 2019-12-05 09:32:50
Paper: DCGAN: Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks WGAN: Wasserstein GAN WGAN-GP: Improved Training of Wasserstein GANs LSGAN: Least Squares Generative Adversarial Networks SNGAN: Spectral normalization for generative adversarial networks RSGAN: The relativistic discriminator: a key element missing from standard GAN 损失函数如下表所示: DCGAN WGAN WGAN-GP LSGAN SNGAN RSGAN 五种GAN不同迭代次数生成样本,对比结果如下图所示: 代码具体请参看我的Github: https://github.com/MingtaoGuo/DCGAN_WGAN_WGAN-GP_LSGAN_SNGAN_RSGAN_RaSGAN_TensorFlow class GAN: #Architecture of generator and

A--利用梯度下降求解逻辑回归的python实现

旧时模样 提交于 2019-12-05 05:31:37
#导入必要的包 import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline BGD求解逻辑回归 In [2]: #⾸先定义联系函数sigmoid函数 def sigmoid(inX): return 1.0/(1+np.exp(-inX)) In [7]: #自定义一个归一化函数(此函数的前提是我的数据是一个矩阵) def regularize(xMat): inMat = xMat.copy()#创建一个副本,这样对inmat进行操作不会影响到xmat inMeans = np.mean(inMat,axis = 0) #求均值 inVar = np.std(inMat,axis = 0) #求标准差 inMat = (inMat - inMeans)/inVar #归一化 return inMat In [4]: #编写批量梯度下降的自定义函数 def logisticReg_0(dataSet,eps=0.01,numIt=50000): xMat = np.mat(dataSet.iloc[:, :-1].values) yMat = np.mat(dataSet.iloc[:, -1].values).T

Focal Loss 损失函数简述

ⅰ亾dé卋堺 提交于 2019-12-05 03:05:21
Focal Loss 摘要 Focal Loss 目标是解决样本类别不平衡 以及 样本分类难度不平衡等问题 ,如目标检测中大量简单的background,很少量较难的foreground样本。 Focal Loss通过修改交叉熵函数,通过增加类别权重 \(\alpha\) 和 样本难度权重调因子(modulating factor) \((1-p_t)^\gamma\) ,来减缓上述问题,提升模型精确。 一、技术背景 我们知道object detection的算法主要可以分为两大类:two-stage detector和one-stage detector。前者是指类似Faster RCNN,RFCN这样需要region proposal的检测算法,这类算法可以达到很高的准确率,但是速度较慢。虽然可以通过减少proposal的数量或降低输入图像的分辨率等方式达到提速,但是速度并没有质的提升。后者是指类似YOLO,SSD这样不需要region proposal,直接回归的检测算法,这类算法速度很快,但是准确率不如前者。 作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确率,同时不影响原有的速度。 二、拟解决问题 作者认为one-stage detector的准确率不如two-stage

超分损失函数小结

此生再无相见时 提交于 2019-12-04 21:29:34
原论文:Deep Learning for Image Super-resolution: A Survey 1.Pixel Loss: 用来度量生成图片和目标图片的像素级的差异 1.1 L1 loss 1.2 L2 loss 1.3 Charbonnier loss:L1 Loss的变体,最后参数是一个很小常量(e.g., 1e − 3),为了使数值稳定 像素损失是最常见的损失,通常L2损失能够对大的损失进行惩罚,但是在小的损失上无能为力,效果不如L1,像素损失实际上并没有考虑到图像质量(如感知质量,纹理),经常缺乏高频细节,并且产生的纹理过于平滑,难以令人满意 2.Content Loss: 如果一个网络,生成的图像足够逼真,那么生成图片的特征(度量特征提取网络中提取的)也应该跟真实图片的足够像,因此通过使特征足够相似,对生成图片质量也有促进作用 l是网络第l层,常用的度量特征提取网络有vgg,resnet。 3.Texture Loss: 由于重建后的图像应该与目标图像具有相同的样式(例如,颜色、纹理、对比度),将图像的纹理视为不同特征通道之间的相关性(用矩阵点乘来表示相关性) 最终损失函数是要求相关性相同: 好用是好用,但是需要通过经验(调参)来确定patch的大小,patch太小会造成纹理部分 artefacts(重影),太大会造成整个图片重影。

Perceptron

你。 提交于 2019-12-04 16:33:14
导读 感知机是二分类的线性分类模型,输入是实例的特征向量(每个属性),输出是实例的类别。感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型。 目的:找出将训练数据进行线性划分的分离超平面 导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求出最小值 有 原始形式 和 对偶形式 两种 感知机是种 线性分类 模型,属于 判别 模型。 感知机原理剖析及实现 定义 现在假设输入空间是$Xsubseteq{R^n}$,输出空间$Y={+1, -1}$。输入$xin X$表示实例的特征向量,输出$yin Y$表示实例的类别,其中输入到输出的函数表示如下: 称为感知机 w,b 称为感知机模型参数; w 称为权值或者权值向量;$bin R$称为偏置 bias 。$wbullet x$表示二者的内机, sign 表示符号函数: 感知机的几何解释为线性方程: 这条直线就是最好的那条线,最优解。特征空间$R^n$对应一个超平面 S ,其中 w 是超平面的法向量, b 是超平面的截距。超平面将特征空间划分为两个部分。位于两部分的点分为正负两个类别:正类为+1,父类为-1。 栗子(图2.1): 策略 给定一个数据集 其中$x_i$是输入空间实例的特征向量,$y_i$是实例的输出类别,如果存在超平面S满足将数据集的正负实例完全分开,即满足:当$wbullet x_i+b>0$

yolo系列阅读笔记(v1-v3)

只谈情不闲聊 提交于 2019-12-04 11:28:54
yolov1 模型输出的概率建模 图片首先被分割为S*S的网格(grid cell)。如果一个bbox的中心落在一个网格里,则该网格负责检测该物体。(对于pascal数据集,S定为7) 每个网格预测B个bbox及其confidence score,confidence定义为Pr(Object)∗IOU。 若该网格内没有物体,score应当是0;否则score被希望等于IOU(即如果网格不包含目标中心,则Pr(Object)=0,否则=1)。这个score反应了置信度,此处置信度是指模型预测的box是否真的包含目标(即第一项)以及模型自己认为box的准确度(即第二项)。 每个bbox包含5个预测值,分别为x,y,w,h和score。(x,y)坐标是box中心相对于网格边界(?),(w,h)是相对于整幅图像。score代预测box与真实值的iou。(iou不是能通过xywh直接算出来吗?) 每个cell同时还预测C个类别概率,即 \[ \begin{equation} \operatorname{Pr}\left(\text { Class }_{i} | \text { Object }\right) \end{equation} \] 根据条件概率公式,有: \[ \operatorname{Pr}\left(\text { Class }_{i} \text { |Object