最优化理论与算法学习笔记(1)——预备知识

随着研究的深入,越发的感觉数学专业的知识具有至关重要的作用。也是受刚毕业的室友的启发,作为机器学习领域的学生,应当较系统的学习一下相关的数学知识。此博客的用意在于记录并分享学习进程,并可以快速查阅一些知识。

1 最优解概念

首先,最优化问题分为两类:线性规划问题和非线性规划问题。而如何区分这两者呢?一个数学模型有两个重要的部分:目标函数和约束函数。此二者均为线性,则为线性规划问题,反之则反。

而如何判别线性与否,这也是个会经常遇到,也会是有很多人初学时的疑惑。线性的定义已经是随处可见的了,此处引用两个例子来说明。

例1.1 食谱问题

假设市场中可以买到n种不同的食品,第j种单位售价c_j,每种食品含有m种基本营养成分,第j种食品每一个单位含第i种营养成分为\alpha_{ij}。又设每人每天对第i种营养成分的需求量不少于b。尝试确定在保证营养要求的条件下最经济的食谱。

该例子是一个线性规划问题,首先建立模型。

假设每人每天需求各种食品的数量为:x_1, x_2, ......, x_n

则目标函数为:min \sum_{j=1}^{n}c_jx_j,也就是最经济的目标。

约束条件则为:\sum_{j=1}^{n}a_{ij}x_j \geqslant b_i (i = 1, 2, ..., m),也就是保证营养成分的基本需要。

例1.2 选址问题

假设有n个市场,第j个市场的位置为(a_j, b_j),对某种货物的需求量为q_j (j=1,...,n)。现计划建立m个货栈,第i个货栈的容量为c_i(i=1,...,m),尝试确定货栈的位置,使各货栈到各市场的运输量与路程乘积之和最小。

该问题是一个非线性规划问题。首先假设第i个货栈的位置为:(x_i,y_i)(i=1,...,m)

第i个货栈供给 第j个市场的货物量为:W_{ij}(i=1,...,m;j=1,...,n)

第i个货栈到第j个市场的距离可以定义为:d_{ij}=\sqrt{(x_i-a_j)^2+(y_i-b_j)^2}

则目标函数为:min\sum_{i=1}^{m}\sum_{j=1}^{n}W_{ij}\sqrt{(x_i-a_j)^2+(y_i-b_j)^2},也就是使运输量与路程乘积最小。

约束条件则为:

1)\sum_{j=1}^{n}W_{ij}\leqslant c_i, \ \ \ i=1,...,m,每个货栈向各市场供货总和不可超过容量。

2)\sum_{i=1}^{m}W_{ij}=q_i, \ \ \ j=1,...,n,每个市场收到货物等于需求量。

3)W_{ij}\geqslant 0, \ \ \ i=1,...,m,j=1,...,n,运输量不能为负数。

可以明显的从目标及约束函数看出线性与否的不同。

在以上问题中,满足约束的点称为可行点,全体可行点组成可行集可行域。若一个问题的可行集 是全部空间,则此问题为无约束问题

优化问题目的在于求解最优解,其定义如下:

定义1.1 设f(x)为目标函数,S为可行域,\bar{x} \in S,若对每一个x \in S,成立f(x)\geqslant f(\bar{x}),则称\bar{x}为f(x)在S上的一个全局极小点。

定义1.2 设f(x)为目标函数,S为可行域,若存在\bar{x} \in S\varepsilon > 0邻域N(\bar{x}, \varepsilon)=\left \{x|\left \| x-\bar{x} \right \|<\varepsilon \right \},使得对每个x \in S \bigcap N(\bar{x}, \varepsilon),成立f(x)\geqslant f(\bar{x}),则称\bar{x}为f(x)在S上的一个局部极小点。

2 范数

范数作为不可或缺的度量,也一直是优化问题、机器学习问题等广泛应用中涉及的基础概念。

定义2.1 若实值函数\left \| \cdot \right \|:\mathbb{R}^n\rightarrow \mathbb{R}满足下列条件:

(1)\left \| x \right \|\geqslant 0, \forall x \in\mathbb{R}^n; \left \| x \right \|=0当且仅当x=0;

(2)\left \| \alpha x \right \|=\left | \alpha \right |\left \| x \right \|, \forall \alpha \in \mathbb{R}, x \in \mathbb{R}^n

(3)\left \| x+y \right \| \leqslant \left \| x \right \|+\left \| y \right \|, \forall x,y \in \mathbb{R}^n

则称\left \| \cdot \right \|为向量范数。其中\mathbb{R}^n表示n维空间。

一般地,对于1\leqslant p< \infty, L_p范数为:\left \| x \right \|_p=(\sum_{j=1}^{n}\left | x_j \right |^p)^{\frac{1}{p}}

定义2.2 设A为m\times n矩阵,\left \| \cdot \right \|_{\alpha}\mathbb{R}^{m}上向量范数,\left \| \cdot \right \|_\beta\mathbb{R}^n上向量范数,定义矩阵范数\left \| A \right \|=\underset{\left \| x \right \|_{\beta}=1}{max}\left \| Ax \right \|_\alpha

3 序列的极限

极限作为优化问题的重要参考量,同样具有多种定义。

定义3.1 设\left \{ x^{(k)} \right \}\mathbb{R}^n中一个向量序列,\bar{x} \in \mathbb{R}^n,如果对每个任意的\varepsilon>0存在正整数K_\varepsilon,使得当k>K_\varepsilon时就有\left \| x^{(k)}-\bar{x} \right \| < \varepsilon,则称序列收敛到\bar{x},或称序列以其为极限,记作\underset{k_j\rightarrow \infty}{lim}x^{(k_j)}=\hat{x}

4 梯度、Hesse矩阵、Taylor展开式

函数f在x 处的梯度为n维列向量:\bigtriangledown f(x)=\left [ \frac{\partial f(x)}{\partial x_1},\frac{\partial f(x)}{\partial x_2},...,\frac{\partial f(x)}{\partial x_n} \right ]^T

f在x处的Hesse矩阵为n \times n矩阵\bigtriangledown^2f(x),第i行第j列元素为

\left [ \bigtriangledown^2f(x) \right ]_{ij}=\frac{\partial^2f(x)}{\partial x_i \partial x_j}, \ \ \ 1\leqslant i,j\leqslant n

当f(x)为二次函数时,梯度及Hesse矩阵很容易求得,二次函数可以写成下列形式:

f(x)=\frac{1}{2}x^TAx+b^Tx+c

其中A是n阶对称矩阵,b是n维列向量,c是常数。函数f(x)在x处的梯度\bigtriangledown f(x)=Ax+b,Hesse矩阵\bigtriangledown^2f(x)=A

假设在开集S\subset \mathbb{R}^nf \in C^1(S),给定点\bar{x}\in S,则f在点\bar{x}的一阶Taylor展开式为

f(x)=f(\bar{x})+\bigtriangledown f(\bar{x})^T(x-\bar{x})+o(\left \| x-\bar{x} \right \|)

其中后面的余项变量趋向于零时,关于其是高阶无穷小量。

以上便是最优化的基础部分,下一部分,还是预备阶段,但需要系统的梳理凸函数的内容。只有目标为凸的时候,才可以优化,所以在优化前,需要对目标进行是否凸的判断。

 

你可能感兴趣的:(数学基础,算法)