Softmax推导
主要从事FPGA,在xilinx网站看到machine Learning on Xilinx Devices 将会支持Tensorflow (目前支持Caffe—-Facebook支持的深度学习工具,考虑到市场热衷程度选择Google),找了一个https://classroom.udacity.com/courses/ud730/lessons/6370362152/concepts/63815621490923 的网站,里面由视频教程。
Softmax 模型
Softmax回归模型对于诸如MNIST手写数字分类等问题是很有用的,该问题的目的是辨识10个不同的单个数字。Softmax回归是有监督的,MNIST 是一个手写数字识别库。
softmax是什么东东?试着找到一些说明一大堆公式本人也试着推到了一下:公式(这个公式编译器真实太恶心了)
在Softmax回归中将
x
分类为类别
p(y(i)=j│x(i);θ)=e(θTJx(i)∑kl=1(θTlx(i)
其中,
k
为列别数,
公式的推到http://www.cnblogs.com/Deep-Learning/p/7073744.html
http://www.cnblogs.com/daniel-D/archive/2013/05/30/3109276.html(前辈们整理的很好了)。
“”“Softmax.”“”的练习题,用python3.5 运行,同时安装了numpy数组运算/pyplot画图工具
scores = [3.0, 1.0, 0.2]
import numpy as np
def softmax(x):
"""Compute softmax values for each sets of scores in x."""
pass # TODO: Compute and return softmax(x)
return np.exp(x)/np.sum(np.exp(x),axis=0)
print(softmax(scores))
# Plot softmax curves
import matplotlib.pyplot as plt
x = np.arange(-2.0, 6.0, 0.1)
scores = np.vstack([x, np.ones_like(x), 0.2 * np.ones_like(x)])
plt.plot(x, softmax(scores).T, linewidth=2)
plt.show()
输出结果为
[ 0.8360188 0.11314284 0.05083836]
首先softmax函数的形式表明了,是对输入个数个变量做概率归一化。所以几个输入则有几个分类输出可能。
好,我们显然从照片可以看出,这个softmax对于该3分类问题。有以下特性:
1.蓝色的类别的主体区间在-2到6,如果大过这个主题区间则蓝色类概率趋于1,其他两类趋于0。
2.如果同比缩小输入为原来的十分之一。则值更接近0附近。很可能造成一个接近均匀分布的输出。
这两类问题是我们以后有可能需要考虑到的,如果使用softmax,那么如何让输入处在一个使得分类输出可靠的
区间里面。