手搓GPT系列之 - 如何理解logit函数

NLP还存不存在我不知道,但是数学之美一直都在。之前的文章中有提到logit公式为:w^Tx+b。如何理解这个logit公式?为什么叫这个名字呢?有些人说logit公式就是神经网络中未经过连接函数(一般为sigmoid函数)处理过的函数。这些说法也不错,不过还没到点上,本文将为机器学习的爱好者们说明一下为什么这个公式叫logit公式。

1 先理解一个基础概念:odd

中文直译是”可能性,机率”,在数学上有更加明确的意义,即一个事情发生的概率和不发生的概率之比。假设某件事x发生的概率为p(x),那么:

odd(x)=\frac{p(x)}{1-p(x)}

由于p(x)\in[0,1],所以odd(x)\in[0,+\inf)

2 odd函数图像

import numpy as np
import math
import matplotlib.pyplot as plt

def odd(x):
    return x / (1 - x)

x=np.arange(0,1,0.001)
y1=[odd(a) for a in x]

plot1=plt.plot(x,y1,'*',label='odd(x)')

plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Odd Function')
plt.legend(loc=4)
plt.grid(True)
plt.show()

3 LR模型中的logit

我们拿LR模型的似然函数:

p(x)=\frac{1}{1+e^{-w^Tx+b}}

我们做一些转换:

 1-p(x)=\frac{e^{-w^Tx+b}}{1+e^{-w^Tx+b}}

 \frac{p(x)}{1-p(x)}=e^{w^Tx+b}

w^Tx+b=\log{\frac{p(x)}{1-p(x)}}=\log odd(x)

通过上边的转化,我们可以看到,w^Tx+b等于odd值取log,因此被称为logit函数,也可以理解为log它,它就是odd值。

4 logit函数图像

import numpy as np
import math
import matplotlib.pyplot as plt

x=np.arange(0.0001,1,0.0001)
odd=[a/(1-a) for a in x]
y1=[math.log(a,math.e) for a in odd]


plot1=plt.plot(x,y1,'*',label='logit(x)')


plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Logit Function')
plt.legend(loc=4)
plt.grid(True)
plt.show()

 

猜你喜欢

转载自blog.csdn.net/marlinlm/article/details/129964528