Browse Source

Fix softmax figure problem

pull/7/head
bushuhui 3 years ago
parent
commit
d4abe25787
7 changed files with 80 additions and 49 deletions
  1. +70
    -41
      5_nn/1-Perceptron.ipynb
  2. +4
    -2
      5_nn/2-mlp_bp.ipynb
  3. +6
    -6
      5_nn/3-softmax_ce.ipynb
  4. BIN
      5_nn/images/figures.pptx
  5. BIN
      5_nn/images/softmax_neuron.0.png
  6. BIN
      5_nn/images/softmax_neuron.png
  7. BIN
      5_nn/perceptron_sample_data.pdf

+ 70
- 41
5_nn/1-Perceptron.ipynb
File diff suppressed because it is too large
View File


+ 4
- 2
5_nn/2-mlp_bp.ipynb View File

@@ -719,7 +719,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 9, "execution_count": 9,
"metadata": {},
"metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"import numpy as np\n", "import numpy as np\n",
@@ -1024,7 +1026,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.7.9"
"version": "3.5.4"
} }
}, },
"nbformat": 4, "nbformat": 4,


+ 6
- 6
5_nn/3-softmax_ce.ipynb View File

@@ -11,13 +11,13 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"softmax经常被添加在分类任务的神经网络中的输出层,神经网络的反向传播中关键的步骤就是求导,从这个过程也可以更深刻地理解反向传播的过程,还可以对梯度传播的问题有更多的思考。\n",
"`Softmax`经常被添加在分类任务的神经网络中的输出层,神经网络的反向传播中关键的步骤就是求导,从这个过程也可以更深刻地理解反向传播的过程,还可以对梯度传播的问题有更多的思考。\n",
"\n", "\n",
"## 1. softmax 函数\n", "## 1. softmax 函数\n",
"\n", "\n",
"softmax(柔性最大值)函数,一般在神经网络中, softmax可以作为分类任务的输出层。其实可以认为softmax输出的是几个类别选择的概率,比如有一个分类任务,要分为三个类,softmax函数可以根据它们相对的大小,输出三个类别选取的概率,并且概率和为1。\n",
"`softmax`(柔性最大值)函数,一般在神经网络中, `softmax`可以作为分类任务的输出层。其实可以认为`softmax`输出的是几个类别选择的概率,比如有一个分类任务,要分为三个类,softmax函数可以根据它们相对的大小,输出三个类别选取的概率,并且概率和为1。\n",
"\n", "\n",
"Softmax从字面上来说,可以分成`soft`和`max`两个部分。`max`故名思议就是最大值的意思。Softmax的核心在于`soft`,而`soft`有软的含义,与之相对的是`hard`硬。很多场景中需要我们找出数组所有元素中值最大的元素,实质上都是求的`hardmax`。下面使用`Numpy`模块实现hardmax。"
"Softmax从字面上来说,可以分成`soft`和`max`两个部分。`max`故名思议就是最大值的意思。Softmax的核心在于`soft`,而`soft`有软的含义,与之相对的是`hard`硬。很多场景中需要找出数组所有元素中值最大的元素,实质上都是求的`hardmax`。下面使用`Numpy`模块实现hardmax。"
] ]
}, },
{ {
@@ -62,7 +62,7 @@
"\n", "\n",
"![softmax_demo](images/softmax_demo.png)\n", "![softmax_demo](images/softmax_demo.png)\n",
"\n", "\n",
"softmax直白来说就是将原来输出是$[3,1,-3]$通过softmax函数作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!\n"
"softmax直白来说就是将原来输出是$[3,1,-3]$通过softmax函数作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,选取概率最大(也就是值对应最大的)结点,作为预测目标!\n"
] ]
}, },
{ {
@@ -108,7 +108,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"以一个神经元的二类分类训练为例,进行两次实验(神经网络常用的激活函数为`sigmoid`函数,该实验也采用该函数):输入一个相同的样本数据x=1.0(该样本对应的实际分类y=0);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):\n",
"以一个神经元的二类分类训练为例,进行两次实验(神经网络常用的激活函数为`sigmoid`函数,该实验也采用该函数):输入一个相同的样本数据$x=1.0$(该样本对应的实际分类$y=0$);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):\n",
"\n", "\n",
"![cross_entropy_loss_1](images/cross_entropy_loss_1.png)\n", "![cross_entropy_loss_1](images/cross_entropy_loss_1.png)\n",
"实验1:第一次输出值为0.82\n", "实验1:第一次输出值为0.82\n",
@@ -267,7 +267,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.7.9"
"version": "3.5.4"
} }
}, },
"nbformat": 4, "nbformat": 4,


BIN
5_nn/images/figures.pptx View File


BIN
5_nn/images/softmax_neuron.0.png View File

Before After
Width: 907  |  Height: 328  |  Size: 25 kB

BIN
5_nn/images/softmax_neuron.png View File

Before After
Width: 907  |  Height: 328  |  Size: 25 kB Width: 1411  |  Height: 439  |  Size: 57 kB

BIN
5_nn/perceptron_sample_data.pdf View File


Loading…
Cancel
Save