diff --git a/5_nn/1-Perceptron.ipynb b/5_nn/1-Perceptron.ipynb index c908e87..24e2692 100644 --- a/5_nn/1-Perceptron.ipynb +++ b/5_nn/1-Perceptron.ipynb @@ -197,19 +197,24 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 16, "metadata": {}, "outputs": [ { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2 2 2 2 2 1 1 2 1 1 1 1 2 1 1 1 1 2 2 2]\n" + ] + }, + { "data": { - "image/png": "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\n", + "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ - "
" + "" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -238,12 +243,16 @@ "x = x[shuffled_index]\n", "y = y[shuffled_index]\n", "\n", - "\n", "train_data = np.concatenate((x, y[:, np.newaxis]), axis=1)\n", "\n", + "label_y = y.copy()\n", + "label_y[label_y==-1] = 2;\n", + "print(label_y)\n", "# plot data\n", - "plt.scatter(train_data[:,0], train_data[:,1], c=train_data[:,2], marker='.')\n", + "plt.scatter(train_data[:,0], train_data[:,1], marker='.', s = 300,\n", + " c=label_y, cmap=plt.cm.Spectral)\n", "plt.title(\"Data\")\n", + "plt.savefig(\"perceptron_sample_data.pdf\")\n", "plt.show()\n" ] }, @@ -256,7 +265,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 21, "metadata": { "lines_to_end_of_cell_marker": 2 }, @@ -265,37 +274,47 @@ "name": "stdout", "output_type": "stream", "text": [ - "update weight/bias: 3.662519607024163 3.038628576040485 0.5\n", - "update weight/bias: 3.1283482021588505 1.595298136548129 0.0\n", - "update weight/bias: 1.7022056555578562 0.9488336160189257 -0.5\n", - "update weight/bias: 0.6064534385664728 0.25821553124912766 -1.0\n", - "update weight/bias: -0.0072588404447664345 -1.1732780618880432 -1.5\n", - "update weight/bias: 3.56979581700504 4.157268901515593 -1.0\n", - "update weight/bias: 2.7104258301108155 3.6232316160976543 -1.5\n", - "update weight/bias: 1.6146736131194321 2.9326135313278563 -2.0\n", - "update weight/bias: 1.0805022082541196 1.4892830918355 -2.5\n", - "update weight/bias: -0.3456403383468747 0.8428185713062968 -3.0\n", - "update weight/bias: 3.4230241861565407 3.6955935657768997 -2.5\n", - "update weight/bias: 2.5636541992623156 3.161556280358961 -3.0\n", - "update weight/bias: 1.1375116526613214 2.5150917598297577 -3.5\n", - "update weight/bias: 0.38678027777241897 1.1329290169473543 -4.0\n", - "update weight/bias: -1.446079265832824 -0.7361650837497964 -4.5\n", - "update weight/bias: 1.7930043074867144 5.9278879714909145 -4.0\n", - "update weight/bias: 1.2588329026214018 4.484557531998558 -4.5\n", - "update weight/bias: 0.3697277316535954 3.2936957431536 -5.0\n", - "update weight/bias: -0.519377439314211 2.1028339543086423 -5.5\n", - "update weight/bias: -2.352236982919454 0.23373985361149163 -6.0\n", - "update weight/bias: 1.8159337720901148 4.415105700242464 -5.5\n", - "update weight/bias: 0.7328910527198487 3.024123458986641 -6.0\n", - "update weight/bias: -0.3501516666504174 1.6331412177308182 -6.5\n", - "w = [-0.3501516666504174, 1.6331412177308182]\n", - "b = -6.5\n", + "update weight/bias: 2.9024433699190153 3.129619118339762 0.5\n", + "update weight/bias: 2.013338198951209 1.9387573294948042 0.0\n", + "update weight/bias: 0.4222250668142189 0.37906946899829386 -0.5\n", + "update weight/bias: -0.4668801041535875 -0.8117923198466639 -1.0\n", + "update weight/bias: 1.6670650562137663 2.551793701566567 -0.5\n", + "update weight/bias: 0.8076950693195415 2.0177564161486283 -1.0\n", + "update weight/bias: -0.05167491757468334 1.4837191307306896 -1.5\n", + "update weight/bias: -0.8024062924635857 0.10155638784828613 -2.0\n", + "update weight/bias: 2.4366772808559527 6.765609443088997 -1.5\n", + "update weight/bias: 1.6859459059670503 5.383446700206593 -2.0\n", + "update weight/bias: 0.25980335936605603 4.7369821796773905 -2.5\n", + "update weight/bias: -0.6293018116017504 3.546120390832433 -3.0\n", + "update weight/bias: -1.7123445309720164 2.1551381495766098 -3.5\n", + "update weight/bias: -2.246515935837329 0.7118077100842535 -4.0\n", + "update weight/bias: 0.9925676374822094 7.375860765324964 -3.5\n", + "update weight/bias: 0.1331976505879846 6.841823479907025 -4.0\n", + "update weight/bias: -0.48051462842325465 5.410329886769854 -4.5\n", + "update weight/bias: -1.906657175024249 4.763865366240651 -5.0\n", + "update weight/bias: -2.6573885499131515 3.3817026233582475 -5.5\n", + "update weight/bias: 1.0051310571110115 6.420331199398733 -5.0\n", + "update weight/bias: -0.07791166225925461 5.0293489581429105 -5.5\n", + "update weight/bias: -1.1609543816295207 3.638366716887088 -6.0\n", + "update weight/bias: -1.6951257864948333 2.1950362773947316 -6.5\n", + "update weight/bias: 3.626233232216561 6.632855560776491 -6.0\n", + "update weight/bias: 2.5304810152251775 5.942237476006693 -6.5\n", + "update weight/bias: 1.1043384686241833 5.29577295547749 -7.0\n", + "update weight/bias: -0.7285210749810598 3.4266788547803397 -7.5\n", + "update weight/bias: -1.342233353992299 1.995185261643169 -8.0\n", + "update weight/bias: 1.5602100159267163 5.124804379982931 -7.5\n", + "update weight/bias: 1.0260386110614037 3.6814739404905743 -8.0\n", + "update weight/bias: 0.13693344009359731 2.4906121516456166 -8.5\n", + "w = [0.13693344009359731, 2.4906121516456166]\n", + "b = -8.5\n", + "\n", "\n", "\n", "ground_truth: [-1. -1. -1. -1. -1. 1. 1. -1. 1. 1. 1. 1. -1. 1. 1. 1. 1. -1.\n", " -1. -1.]\n", - "predicted: [-1. -1. -1. -1. -1. -1. 1. -1. 1. 1. 1. 1. -1. 1. 1. 1. 1. -1.\n", - " -1. -1.]\n" + "predicted: [-1. -1. -1. -1. 1. 1. 1. -1. 1. 1. 1. 1. -1. 1. 1. 1. 1. -1.\n", + " -1. -1.]\n", + "accuracy: 0.95\n" ] } ], @@ -303,12 +322,14 @@ "import random\n", "import numpy as np\n", "\n", - "# 符号函数\n", + "\n", "def sign(v):\n", + " \"\"\"符号函数\"\"\"\n", " if v > 0: return 1\n", " else: return -1\n", " \n", "def perceptron_train(train_data, eta=0.5, n_iter=100):\n", + " \"\"\"对感知机模型进行训练\"\"\"\n", " weight = [0, 0] # 权重\n", " bias = 0 # 偏置量\n", " learning_rate = eta # 学习速率\n", @@ -331,6 +352,7 @@ " return weight, bias\n", "\n", "def perceptron_pred(data, w, b):\n", + " \"\"\"输入数据,模型,对数据进行分类\"\"\"\n", " y_pred = []\n", " for d in data:\n", " x1, x2, y = d\n", @@ -340,17 +362,24 @@ " return np.array(y_pred, dtype=float)\n", "\n", "\n", - "# do training\n", + "# 训练感知机\n", "w, b = perceptron_train(train_data)\n", "print(\"w = \", w)\n", "print(\"b = \", b)\n", "\n", - "# predict \n", + "# 预测 \n", "y_pred = perceptron_pred(train_data, w, b)\n", "\n", + "# 计算分类精度\n", + "c = y_pred == y\n", + "cn = np.sum(c == True)\n", + "acc = cn / len(y_pred)\n", + "print()\n", + "\n", "print(\"\\n\")\n", "print(\"ground_truth: \", train_data[:, 2])\n", - "print(\"predicted: \", y_pred)" + "print(\"predicted: \", y_pred)\n", + "print(\"accuracy: \", acc)" ] }, { @@ -380,7 +409,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.5.4" } }, "nbformat": 4, diff --git a/5_nn/2-mlp_bp.ipynb b/5_nn/2-mlp_bp.ipynb index b7ef799..7a79ea5 100644 --- a/5_nn/2-mlp_bp.ipynb +++ b/5_nn/2-mlp_bp.ipynb @@ -719,7 +719,9 @@ { "cell_type": "code", "execution_count": 9, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -1024,7 +1026,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.5.4" } }, "nbformat": 4, diff --git a/5_nn/3-softmax_ce.ipynb b/5_nn/3-softmax_ce.ipynb index 651302d..f222841 100644 --- a/5_nn/3-softmax_ce.ipynb +++ b/5_nn/3-softmax_ce.ipynb @@ -11,13 +11,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "softmax经常被添加在分类任务的神经网络中的输出层,神经网络的反向传播中关键的步骤就是求导,从这个过程也可以更深刻地理解反向传播的过程,还可以对梯度传播的问题有更多的思考。\n", + "`Softmax`经常被添加在分类任务的神经网络中的输出层,神经网络的反向传播中关键的步骤就是求导,从这个过程也可以更深刻地理解反向传播的过程,还可以对梯度传播的问题有更多的思考。\n", "\n", "## 1. softmax 函数\n", "\n", - "softmax(柔性最大值)函数,一般在神经网络中, softmax可以作为分类任务的输出层。其实可以认为softmax输出的是几个类别选择的概率,比如我有一个分类任务,要分为三个类,softmax函数可以根据它们相对的大小,输出三个类别选取的概率,并且概率和为1。\n", + "`softmax`(柔性最大值)函数,一般在神经网络中, `softmax`可以作为分类任务的输出层。其实可以认为`softmax`输出的是几个类别选择的概率,比如有一个分类任务,要分为三个类,softmax函数可以根据它们相对的大小,输出三个类别选取的概率,并且概率和为1。\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", "![softmax_demo](images/softmax_demo.png)\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", "metadata": {}, "source": [ - "以一个神经元的二类分类训练为例,进行两次实验(神经网络常用的激活函数为`sigmoid`函数,该实验也采用该函数):输入一个相同的样本数据x=1.0(该样本对应的实际分类y=0);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):\n", + "以一个神经元的二类分类训练为例,进行两次实验(神经网络常用的激活函数为`sigmoid`函数,该实验也采用该函数):输入一个相同的样本数据$x=1.0$(该样本对应的实际分类$y=0$);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):\n", "\n", "![cross_entropy_loss_1](images/cross_entropy_loss_1.png)\n", "实验1:第一次输出值为0.82\n", @@ -267,7 +267,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.5.4" } }, "nbformat": 4, diff --git a/5_nn/images/figures.pptx b/5_nn/images/figures.pptx new file mode 100644 index 0000000..3ef4dde Binary files /dev/null and b/5_nn/images/figures.pptx differ diff --git a/5_nn/images/softmax_neuron.0.png b/5_nn/images/softmax_neuron.0.png new file mode 100644 index 0000000..f7eca53 Binary files /dev/null and b/5_nn/images/softmax_neuron.0.png differ diff --git a/5_nn/images/softmax_neuron.png b/5_nn/images/softmax_neuron.png index f7eca53..f9e736e 100644 Binary files a/5_nn/images/softmax_neuron.png and b/5_nn/images/softmax_neuron.png differ diff --git a/5_nn/perceptron_sample_data.pdf b/5_nn/perceptron_sample_data.pdf new file mode 100644 index 0000000..d3a801d Binary files /dev/null and b/5_nn/perceptron_sample_data.pdf differ