Skip to content

Commit

Permalink
Fix some format issues
Browse files Browse the repository at this point in the history
  • Loading branch information
JackEggie authored Mar 1, 2019
1 parent 2df4478 commit 02494ce
Showing 1 changed file with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
> * 原文作者:[James Loy](https://towardsdatascience.com/@jamesloyys)
> * 译文出自:[掘金翻译计划](https://github.com/xitu/gold-miner)
> * 本文永久链接:[https://github.com/xitu/gold-miner/blob/master/TODO1/how-to-build-your-own-neural-network-from-scratch-in-python.md](https://github.com/xitu/gold-miner/blob/master/TODO1/how-to-build-your-own-neural-network-from-scratch-in-python.md)
> * 译者:
> * 译者:[JackEggie](https://github.com/JackEggie)
> * 校对者:
# 如何用 Python 从零开始构建你自己的神经网络
Expand All @@ -13,7 +13,7 @@

这篇文章包含了我所学到的东西,希望对你们也有用。

## 什么是神经网络?
## 什么是神经网络

大多数介绍神经网络的文章在描述它们时都会与大脑做类比。在不深入研究与大脑类似之处的情况下,我发现将神经网络简单地描述为给定输入映射到期望输出的数学函数更容易理解一些。

Expand All @@ -23,9 +23,9 @@
* 任意数量的**隐含层**
* 一个**输出层****_ŷ_**
* 层与层之间的一组**权重****偏差****_W__b_**
* 每个隐含层中所包含的一个可选的**激活函数**, **_σ_**。在本教程中,我们将使用 Sigmoid 激活函数。
* 每个隐含层中所包含的一个可选的**激活函数****_σ_**。在本教程中,我们将使用 Sigmoid 激活函数。

下图展示了 2 层神经网络的架构(**注:在计算神经网络中的层数时,输入层通常被排除在外**)
下图展示了 2 层神经网络的架构**注:在计算神经网络中的层数时,输入层通常被排除在外**

![](https://cdn-images-1.medium.com/max/1600/1*sX6T0Y4aa3ARh7IBS_sdqw.png)

Expand Down Expand Up @@ -84,7 +84,7 @@ class NeuralNetwork:
self.output = sigmoid(np.dot(self.layer1, self.weights2))
```

但是,我们仍然需要一种方法来评估预测的“精准程度”(即我们的预测有多好)? **损失函数**能让我们做到这一点。
但是,我们仍然需要一种方法来评估预测的“精准程度”(即我们的预测有多好)?而**损失函数**能让我们做到这一点。

### 损失函数

Expand All @@ -98,7 +98,7 @@ class NeuralNetwork:

### 反向传播

现在我们已经得出了预测的误差(损失),我们还需要找到一种方法将误差**传播**回来,并更新我们的权重和偏差。
现在我们已经得出了预测的误差(损失),我们还需要找到一种方法将误差**传播**回来,并更新我们的权重和偏差。

为了得出调整权重和偏差的合适的量,我们需要计算**损失函数对于权重和偏差的导数**

Expand All @@ -108,15 +108,15 @@ class NeuralNetwork:

梯度下降算法

如果我们已经算出了导数,我们就可以简单地通过增加/减少导数来更新权重和偏差(参见上图)。这就是所谓的**梯度下降**
如果我们已经算出了导数,我们就可以简单地通过增大/减小导数来更新权重和偏差(参见上图)。这就是所谓的**梯度下降**

然而,我们无法直接计算损失函数对于权重和偏差的导数,因为损失函数的等式中不包含权重和偏差。 因此,我们需要**链式法则**来帮助我们进行计算。

![](https://cdn-images-1.medium.com/max/1600/1*7zxb2lfWWKaVxnmq2o69Mw.png)

用于计算损失函数对于权重的导数的链式法则。注意,为了简单起见,我们只展示了假设为 1 层的神经网络的偏导数。

哦!这真难看,但它让我们得到了我们需要的东西 —— 损失函数对于权重的导数(斜率),这样我们就可以相应地调整权重。
哦!这真难看,但它让我们得到了我们需要的东西 —— 损失函数对于权重的导数(斜率),这样我们就可以相应地调整权重。

现在我们知道要怎么做了,让我们向 Pyhton 代码中添加反向传播函数。

Expand Down Expand Up @@ -159,7 +159,7 @@ class NeuralNetwork:

![](https://cdn-images-1.medium.com/max/1600/1*fWNNA2YbsLSoA104K3Z3RA.png)

让我们看一下经过 1500 次迭代后神经网络的最终预测(输出)
让我们看一下经过 1500 次迭代后神经网络的最终预测(输出)

![](https://cdn-images-1.medium.com/max/1600/1*9oOlYhhOSdCUqUJ0dQ_KxA.png)

Expand Down

0 comments on commit 02494ce

Please sign in to comment.