神经网络原来这么简单,机器学习入门贴送给你 | 干货
作者头像
  • 李先生
  • 2020-06-23 08:41:42 10

你想学习机器学习吗?这里有一个适合初学者的入门指南。

如果你想了解神经网络、随机森林、计算机视觉等内容,这篇文章会是一个很好的起点。这篇文章是由一位Facebook的软件工程师编写的,旨在帮助完全没有基础的初学者,当然,有一定基础的学习者也能从中受益。

首先,我们以神经网络为例,来了解一下这个概念。

作者指出,神经网络并不像人们想象中的那么复杂。虽然“神经网络”这个词听起来可能让人觉得难以理解,但实际上,它非常容易掌握。

神经网络主要由三个部分组成:神经元、神经网络的构建以及训练神经网络。

神经元——神经网络的基本单元

神经元是神经网络中最基本的组成部分。以一个有两个输入的神经元为例,神经元会接收输入x1和x2,并进行一系列数学运算,最终产生输出y。

具体来说,在神经元内部,会发生三件事情:

  1. 每个输入都会乘以相应的权重;
  2. 将所有加权输入相加,并加上一个偏差b;
  3. 最后,通过一个激活函数,得到输出y。

通常情况下,激活函数会选择Sigmoid函数,这种函数可以将任意实数映射到0到1之间。

例如,假设激活函数是Sigmoid函数,且权重w=[0,1],偏差b=4。当输入为x=[2,3]时,输出y≈0.999。

构建神经网络

神经元连接在一起就形成了神经网络。例如,一个有两个输入、一个含两个神经元的隐藏层和一个含一个神经元的输出层的神经网络。

实际上,你可以构建包含任意数量层和任意数量神经元的神经网络。下面是一个使用Python实现的例子:

```python import numpy as np

def sigmoid(x): return 1 / (1 + np.exp(-x))

class Neuron: def init(self, weights, bias): self.weights = weights self.bias = bias

def feedforward(self, inputs):
    total = np.dot(self.weights, inputs) + self.bias
    return sigmoid(total)

weights = np.array([0, 1]) bias = 4

neuron = Neuron(weights, bias) x = np.array([2, 3]) print(neuron.feedforward(x)) # 输出约为0.999 ```

训练神经网络——计算损失函数

在训练神经网络之前,我们需要一种方法来衡量模型的效果,即损失函数。这里我们采用均方误差(MSE)作为损失函数。

例如,如果我们预测的结果是0,而实际结果是1,那么损失值将会很高。

训练神经网络——最小化损失

为了减少损失,我们需要不断调整权重和偏差,这就是所谓的反向传播。通过反向传播,我们可以计算出每个参数对损失的影响,进而通过随机梯度下降等优化算法来更新这些参数。

简而言之,训练神经网络的过程如下:

  1. 从数据集中选取一个样本,比如Alice;
  2. 使用反向传播计算所有参数的偏导数;
  3. 使用随机梯度下降更新参数;
  4. 重复步骤1。

看完这部分内容,你是否觉得神经网络并没有想象中那么难呢?接下来还有很多有趣的概念等着你去探索!

点击下方链接,深入了解神经网络和其他机器学习相关知识:

https://victorzhou.com/tag/machine-learning/

希望这篇文章能帮助你开启机器学习之旅!

    本文来源:图灵汇
责任编辑: : 李先生
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
干货神经网络入门送给机器原来这么简单学习
    下一篇