非线性

基于遗传算法和非线性规划的函数寻优算法

痴心易碎 提交于 2020-01-30 09:28:22
一.理论基础 1.非线性规划 1.非线性规划 研究一个n元函数在一组等式或不等式的约束条件下的极值问题,在信赖域法、稀疏拟牛顿法、并行计算、内点法和有限存储法等领域研究。 2.非线性规划函数 matlab中的 fmincon 基本用法 :x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub);其中, fun 是用M文件定义的函数f(x),代表了(非)线性目标函;x0是x的初始值; A,b,Aeq,beq 定义了线性约束 ,如果没有线性约束,则A=[],b=[],Aeq=[],beq=[]; lb和ub 是变量x的下界和上界,如果下界和上界没有约束,则lb=[],ub=[],也可以写成lb的各分量都为 -inf,ub的各分量都为inf。 3.优缺点 经典非线性规划算法大多采用梯度下降的方法求解,局部搜索能力较强,但是全局搜索能力较弱。 2.遗传算法的思想 1.简介 适者生存”是自然界的一大规律,优胜劣汰,顾名思义,遗传算法可用来解决最优的问题。遗传算法就是一个优胜劣汰的过程,最终选择出最好的群体。非常适用于处理传统搜索算法难以解决的复杂和非线性优化问题。目前,遗传算法广泛应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。 2.核心思想 就是对一定数量个体组成的生物种群进行选择、交叉、变异等遗传操作,最终求得 最优解或近似最优解 。在进行遗传操作时

深度学习之学习笔记(六)—— 激活函数

三世轮回 提交于 2020-01-28 02:17:04
激活函数 在第三章《神经元的工作原理》中,我们曾经提到过激活函数。当时使用的是最简单的阶跃函数作为激活函数。 阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。Sigmoid函数的定义和图形如下: Sigmoid函数把可能在较大范围内变换的输入值挤压到(0,1)输出范围内,因此也称为“ 挤压函数 ”(Squashing function)。 其中 , Sigmoid函数被选为激活函数还有一个很重要的原因是它的 导数很容易计算。 求导过程如下: 先将 稍微变形,有 记 , 则 其中 根据复合函数求导法则: 若 ,则 为什么要计算激活函数的导数?这个我们在后面《误差反向传播法》一章里解释。 非线性激活函数 ( ) 可以很明显地看出,Sigmoid函数是一个非线性函数。关于线性函数和非线性函数的定义如下: 输出值是输入值的常倍数的函数称为 线性函数 ,用数学式表示为 , 为常数。因此线性函数是一条直线 非线性函数 ,就是指不像线性函数那样呈现出一条直线的函数,比如Sigmoid函数 所有的 激活函数 都是 非线性函数 让我们回顾一下神经网络训练时的具体操作:我们将输入 和它对应的权重 相乘,并将激活函数 应用于该乘积来获取该层的输出,并将激活函数的运算结果作为输入馈送到下一个层。 问题是,为什么我们一定要加上一个非线性的激活函数来处理输入信号呢?

【OpenCV(C++)】图像处理:非线性滤波

半世苍凉 提交于 2020-01-26 18:30:50
【OpenCV(C++)】图像处理:非线性滤波 非线性滤波 中值滤波(Median filter) 双边滤波(Bilateral filter) 非线性滤波 在上一篇文章中所讨论的滤波器都是线性的,即两个信号之间的响应和它们各自响应之和相等,每个像素的输出值是一些输入像素的加权和。 在很多情况下,使用邻域像素的非线性滤波会得到更好的效果。 中值滤波(Median filter) 其基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像的边缘细节。它可以克服线性滤波器所带来的图像细节模糊,而在实际运算过程中并不需要图像的统计特性,使得计算更加方便。 # include <opencv2/highgui/highgui.hpp> # include <opencv2/imgproc/imgproc.hpp> using namespace cv ; int main ( ) { Mat srcImage = imread ( "fg.jpg" ) ; imshow ( "[原图]中值滤波" , srcImage ) ; Mat dstImage ; medianBlur ( srcImage , dstImage , 7 ) ; imshow ( "[效果图]中值滤波" , dstImage ) ; waitKey ( 0 ) ;

Batch Normalization 批量标准化

喜欢而已 提交于 2020-01-26 10:12:10
本篇博文转自:https://www.cnblogs.com/guoyaohua/p/8724433.html  Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性。虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开始就是一个 经验领先于理论分析 的偏经验的一门学问。本文是对论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》的导读。   机器学习领域有个很重要的假设: IID独立同分布假设 ,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢? BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。   接下来一步一步的理解什么是BN。   为什么深度神经网络 随着网络深度加深,训练起来越困难,收敛越来越慢? 这是个在DL领域很接近本质的好问题。很多论文都是解决这个问题的,比如ReLU激活函数,再比如Residual Network,BN本质上也是解释并从某个不同的角度来解决这个问题的。 一、

TensorFlow2.0常用激活函数

℡╲_俬逩灬. 提交于 2020-01-24 20:14:33
激活函数是神经网络中一个十分重要的组成部分,它可以对神经元的接收信息进行非线性变换,将变换后的信息输出到下一层神经元 激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中 构造数据 import tensorflow as tf import matplotlib . pyplot as plt x = tf . linspace ( - 5 . , 5 . , 100 ) # 构造一段连续的数据 x_np = x . numpy ( ) # 转换为 ndarray 的类型,画图时 x 和 x_np 都可以使用 Relu ReLU 对小于 0 的值全部抑制为 0;对于正数则直接输出,具有单侧抑制、相对宽松的兴奋边界等特性 表达式: r ( x ) = m a x ( 0 , x ) r(x )=max(0, x) r ( x ) = m a x ( 0 , x ) 代码: y_relu = tf . nn . relu ( x ) plt . plot ( x , y_relu , c = 'red' , label = 'relu' ) plt . ylim ( ( - 1 , 6 ) ) plt . legend ( loc = 'best' ) plt . show ( ) 形状如图: Sigmoid

图像线性与非线性变换

五迷三道 提交于 2020-01-19 14:39:28
变换目标 1、分段线性变换各种情况的变换效果对比 2、对数、指数变换、取反等多种非线性变换的效果对比 变换结果与分析 分段线性变换 1)变换函数 2)分段线性变换结果 3)分段线性变换对比分析 通过变换,将灰度值小于82的变小,将灰度值大于173的增大,处于82与173之间的被拉伸。 对数变换 1)变换函数 2)对数变换结果 3)对数变换分析 低灰度值区域被拉伸,高灰度值区域被缩小,常数c越大,图像灰度值越集中于255,常数c越接近0,图像灰度值越接近于0. 指数变换 1)变换函数 2)指数变换结果 3)指数变换分析: 当指数大于1,图像灰度值减小,当指数小于1大于0,回想灰度值增大。 取反变换 1)取反变换函数 2)取反变换结果 3)取反变换对比分析 增强了图像暗色区域中的白色或灰色细节,特别是黑色面积在尺寸上占主导地位的时候,效果逐渐明显。 代码 分段线性变换 % Write by 长安 Rjex % 分段线性变换各种情况的变换效果对比 % name为图像文件名, ( r1 , s1 ) , ( r2 , s2 ) 为变换点 function B = pielinear ( name , r1 , s1 , r2 , s2 ) I = imread ( name ) ; if r1 > r2 || s1 > s2 error ( message ( 'MATLAB

机器学习-最小二乘法

女生的网名这么多〃 提交于 2020-01-16 01:51:46
最小二乘法是机器学习中的基础知识点,一致对最小二乘法的理解不够深入,今天就花点时间来深入理解和探讨一下最小二乘法 最小二乘法,又称最小平方法,基本公式通俗来讲,二者先取个差值,在来个平方,最后搞一个和号上去,这就是最小二乘问题的思想,下面介绍下 最小二乘法 我们以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面... 对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择: (1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。 (2)用

【系统分析】1*1卷积的作用

三世轮回 提交于 2020-01-14 02:05:34
在卷积神经网络中,卷积核大小为1*1的卷积有什么作用呢? 有两个作用: 1. 改变channel的数量 2. 增加非线性程度 第一个比较好理解,那就是1*1卷积不改变特征图的大小或者尺寸(当然,你也可以改变,通过stride大于1来实现,这时会损失空间信息。还有就是通过加一个pooling层在这个卷积后面)。另外,这里的 改变 是指我们可以增加通道数,也可以减小通道数。 第二个则是很多人可能不了解的作用。我们知道在卷积之后,我们都会做两件事,第一就是激活,第二是归一化。我们的激活一般选择RelU,这是非线性的,这就可以增加特征的非线性程度。而增加非线性程度则是我们通常想做到的。 来源: CSDN 作者: 月下花弄影 链接: https://blog.csdn.net/qq_27261889/article/details/103923734

深度学习之BN(批量标准化)

纵然是瞬间 提交于 2020-01-13 12:18:51
BN作为最近一年来深度学习的重要成果,已经广泛被证明其有效性和重要性。虽然还解释不清其理论原因,但是实践证明好用才是真的好。 一、什么是BN 机器学习领域有个很重要的假设: 独立同分布假设 ,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。BN就是深度神经网络训练过程中使得每层网络的输入保持相同分布。 二、为什么要使用BN 根据论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》所讲内容,BN主要是解决Internal Convariate Shift问题。那么什么是Internal Convariate Shift呢? 可以这样解释:如果ML系统实例集合<X,Y>中的输入值X的分布老是变,这不符合IID假设,网络模型很难学习到有效的规律。对于深度学习这种包含很多隐层的网络结构,在训练过程中,因为各层参数不停在变化,所以每个隐层都会面临covariate shift的问题,也就是在训练过程中,隐层的输入分布老是变来变去,这就是所谓的“Internal Covariate Shift”,Internal指的是深层网络的隐层,是发生在网络内部的事情,而不是covariate

支持向量机(SVM)处理非线性函数

陌路散爱 提交于 2020-01-13 00:30:54
核心是通过一个优化函数,实现从高维到低维的转换。 用数学表达式进行定义: 最小化: 其中γ是学习率learning_rate 限制条件: 接下来用一个低维到高维的矩阵进行描述: 有 其中式子1.2属于C1,3,4属于C2 由此,通过一个 优化函数 ,我们将非线性的函数变为了线性的函数,之后按照线性函数继续进行处理即可。优化函数,我们称作核函数,常用的核函数有 高斯核、多项式核 sigmoid函数 多项式核 —————————————————————————————— 公式编辑器真的不好用,用Word编辑之后放过来好难看。讲究这看吧! 来源: CSDN 作者: wx-咸鱼 链接: https://blog.csdn.net/weixin_45885232/article/details/103949224