paper link

本人水平有限,也处在学习阶段,如果有理解不到位的或者有其他角度来思考的欢迎留言,大家一起学习。

这篇文章主要记录几个我学习时的疑惑点和解决:

1. Sigmoid Function是怎么想到的

2. Logistic regression 和 Linear regression的关系

3. 为什么要采用平方误差, 平方误差有哪些局限

. Sigmoid Function是怎么想到的

wiki

好奇sigmoid function是怎么得到的, 然后找到了这篇paper。

sigmoid function是logistic function的一个特殊情况

logistic function: f(x) = frac{L}{1+e^{-k(x - x_0)}}

sigmoid function: S(x) = frac{1}{1+e^{-x}} = frac{e^x}{e^x + 1} , 也叫S函数, 有著S型曲线

定义几个notations:

  1. x(1) cdots x(m) 表示输入数据, x(i) in R^n , 第i个数据的第j个feature表示为 x(i)_j
  2. y(1)cdots y(m) 表示已知的训练结果. y(i) in 集合{1 cdots k} 如果是二分类, 那么 k = 2
  3. pi() 定义为一个从数据映射到训练结果类的函数, pi{(x)}_{u} 表示对于输入数据x属于u类的概率是多少, pi() 就是模型学习的对象
  4. 定义indicator function A(u, v) = egin{equation} left{       egin{array}{lr}        1 & u = v \        0 & otherwise \       end{array} 
ight. end{equation}

pi() 函数有以下性质:

egin{equation}   egin{split}   &1. pi{(x)}_v ge 0 \   &2. sum_{v = 1}^{k}pi{(x)}_v = 1 \   &3. pi(x(i))_{y(i)}尽可能大   end{split} end{equation}

pi{(x)}_v = frac{e^{lambda_v cdot x}}{sum_{u = 1}^{k}e^{lambda_v cdot x}}

那个 pi() 也就是多分类的sigmoid function, 他有两个导数的性质(矩阵的分数求导):

frac{partial}{partial{lambda_{v, j}}}pi(x)_v = x_j pi(x)_v (1 - pi(x)_v)

frac{partial}{partiallambda{u, j}}pi(x)_v = -x_jpi(x)_vpi(x)_u (when quad u 
e v)

目标函数就是最大化似然函数,(这里的log指的是以自然对数e为底的对数函数):

lambda = argmax_{lambda}prod_{i = 1}^{m}pi{(x(i))}_{y(i)}

<=>

f(lambda)=sum_{i=1}^{m}log(pi(x(i))_{y(i)})

frac{partial}{partial{lambda_{u, j}}}f(lambda) = sum_{i=1, y(i)=u}^{m}{x(i)_j - sum_{i=1}^{m}{x(i)_j{pi(x(i))_u}}}=0

sum_{i=1}^{m}{{pi(x(i))_ux(i)_j}} = sum_{i=1, \ y(i)=u}^{m}x(i)_j (for quad all quad u, j)

<=>

由此导出平衡等式(balance quad equations) \ sum_{i=1}^{m}{{pi(x(i))_ux(i)_j}} = sum_{i=1}^{m}A(u, y(i))x(i)_j (for quad all quad u, j)

反过来, sigmoid函数是怎么得到的呢:

egin{equation} egin{split} & pi(x)_v ge 0  \ & sum_{v=1}^{k}pi(x)_v = 1\ &sum_{i=1}^{m}{{pi(x(i))_ux(i)_j}} = sum_{i=1}^{m}A(u, y(i))x(i)_j (for quad all quad u, j)   end{split} end{equation}

这里解释一下: eq.1, eq.2 是概率函数的一个必要的性质

eq.3 意思就是为了使 pi(x(i))_u 很好的对训练数据的类别鉴定函数 A(u, y(i)) 做一个逼近

然后目标就是成了找出了一个优秀的函数 pi() 能够和好的满足连续性,平滑性,最小表示长度,奥卡姆剃刀或者低复杂度,还要能够很好的进行generalize, 然后就使用了资讯理论中的熵函数, 这是资讯理论的一个核心函数

pi() = argmax_{pi()}-sum_{v=1}^{k}sum_{i=1}^{m}pi(x(i))_vlog(pi(x(i))_v)

联合以上的条件限制采用拉格朗日乘子法就可计算出sigmoid函数:

egin{equation} L = sum_{j=1}^{n}sum_{v=1}^klambda_{v, j}(sum_{i=1}^{m}{{pi(x(i))_ux(i)_j}} - sum_{i=1}^{m}A(u, y(i))x(i)_j)  \ +sum_{v = 1}^{k}sum_{i=1}^{m}eta_i(pi(x(i))_v - 1) \ -sum_{v=1}^{k}sum_{i=1}^{m}pi(x(i))_vlog(pi(x(i))_v) end{equation}

frac{partial}{partial{pi(x(i))_u}}L = lambda_ucdot x(i) +eta_i-log(pi{(x(i)_u)}) - 1 = 0

pi(x(i))_u = e^{lambda_ucdot x(i)+eta_i -1}

因为 sum_{v=1}^{k}pi(x)_v = 1 所以 sum_{v=1}^k{ e^{lambda_ucdot x(i)+eta_i -1}} = 1 <==> e^eta = frac{1}{sum_{v=1}^{k}{e^{lambda_vcdot x(i) - 1}}}

最终可以得到 pi(x)_u = frac{e^{lambda_u cdot x}}{sum_{v=1}^{k}{e^{lambda_v cdot x}}} 也就是sigmoid 函数


二. Logistic regression 和 Linear regression的关系

Linear Regression求解是 y = 	heta^Tx

是对真实关系 y = 	heta^Tx + epsilon 的 一个近似 epsilon 代表误差项

接著之前逻辑回归的说, 对于二分类, 定义 p = pi(y = 1|x) 表示给定输入x预测为正样本的概率 根据 pi() 推导可以反推出 lambda^Tx = log(frac{p}{1-p})

对于Logistic Regression我们求解的参数是 lambda , Linear Regression也是的, 所以对于这个函数可以看做是Linear Regression对于 y = log(frac{p}{1-p}) 这个对象的拟合, 从这个角度来说两者是和相似之处的。 {frac{p}{1-p}} 也叫做一个事件发生的几率

最大不同的地方在于Logistic Regression的因变数是离散的,而Linear Regression的因变数是连续的( logfrac{p}{1-p} )

三. 为什么要采用平方误差, 平方误差有哪些局限

关于这个背后 的历史就不谈了, 直接说正题。平方误差是建立在假设误差 epsilon 服从正太分布并且变数相互独立的情况下进行的。 epsilon = y - 	heta^Tx in N(u, sigma^2) 而正太分布误差广泛存在, 所以这个假设比较靠谱。

(Root Mean Square Error RMSE) RMSE = sqrt{frac{sum_{i=1}^{n}{(y_i - hat{y_i})^2}}{n}}

一般情况下能够很好的反应回归模型预测值与真实值的偏离程度,但是如果存在个别偏离程度非常大的离群点(outlier),即使这种点非常少也会使得误差很大,所以这种情况是不适用的。这个时候应当换其他的指标,比如(Mean Absolute Percent Error, MAPE) MAPE=sum_{i=1}^{n}{|frac{y_i - hat{y_i}}{y_i}|}*frac{100}{n}

另外就是一定要记住是建立在误差分布为正太分布并且变数之间相互独立的假设,应用限制条件很重要

平方误差的好处也很明显,最直观的就是求导容易,函数平滑连续,便于计算。

最后再来一份在误差服从正太分布的情况下是怎么导出平方误差的公式推导。

epsilon = p(y(i)|x(i);sigma) = frac{1}{sqrt{2pi}sigma}{e^{-frac{(y(i) - 	heta^Tx(i))^2}{2sigma^2}}} 这里均值化一下所以u = 0

最大似然函数就是

	heta = argmax_	heta (L(	heta) = prod_{i=1}^{m}{p(y|x; 	heta)}=prod_{i=1}^{m}{frac{1}{sqrt{2pi}sigma}{e^{-frac{(y(i) - 	heta^Tx(i))^2}{2sigma^2}}}})

log-likelihood function:

	heta = argmax_	heta {logL(	heta) = mfrac{1}{sqrt{2pi}sigma} - frac{1}{2sigma^2}sum_{i=1}^{m}{(y(i) - 	heta^Tx(i))^2}} <==>constant  - MSE

从而得出了平方误差(MSE), 也就是说在假设成立的情况下, 求解最小平方误差和求解最大似然函数目标是一致等价的。

相似的, L1正则误差就是建立在误差分布假设为Laplace分布的情况 p(x|u, b) = frac{1}{2b}e^{-frac{|x-u|}{b}}

当然还有其他的一些变种, 进一步的还可以通过对参数 	heta 进行条件约束进行似然求值

比如 	heta = r sim  N(0, r^2) 那么 L(	heta) = prod_{i=1}^{m}p*r = prod_{i=1}^{m}{frac{1}{sqrt{2pi}sigma}{e^{-frac{(y(i) - 	heta^Tx(i))^2}{2sigma^2}}}})*prod_{j=1}^{d}frac{1}{sqrt{2pi}a}{e^{-frac{	heta^2}{2a^2}}}

打公式真的累人==!

推荐阅读:

相关文章