神经网络|神经网络原来这么简单,机器学习入门贴送给你


白交 发自 凹非寺
量子位 报道 | 公众号 QbitAI
你想学机器学习吗?这里有一个入门贴适合你 。
什么神经网络、随机森林、计算机视觉通通一网打尽 。
这个Facebook软件工程师做了一个入门贴 。
专为基础为零的初学者打造 。
有基础的同学 , 也可以来看看加深一下理解 。
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

我们就以神经网络为例先来一睹为快吧!
神经网络概论
作者说 , 神经网络并不复杂!
“神经网络”一词很流行 , 人们通常认为它很难 , 但其实要简单得多 。
是不是这样呢?先看再说 。
神经网络的理解主要分为三个部分 , 神经元、神经网络的构建、训练神经网络 。
神经元——神经网络的基本单元
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

这是2-input神经元的样子 。
首先神经元接受输入x1、x2 , 进行一些数学运算以后 , 然后产生一个输出y 。
在神经元里 , 通常会发生三件事:
1、每个输入乘以相应的权重;
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

2、将所有加权输入加在一起 , 在加上一个偏差b;
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

3、导入一个激活函数 , 得到输出y 。
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

通常来说 , 激活函数使用Sigmoid函数 , 也就是常说的S型函数 , 输入任意值(-∞ , +∞) , 最后输出都能停留在0-1之间 。
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

对此 , 他还举了一个简单的例子 。
以激活函数是S型函数、2输入神经元为例 , 设置参数 w=[0,1] (w1=0 , w2=1) , b=4 。
input:x=[2,3]
output:y=0.999
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

这也就是最为朴素的神经网络——前馈神经网络 。
对此 , 作者还用Python实现了整个过程 。
import numpy as np
def sigmoid(x):
# Our activation function: f(x) = 1 / (1 + e^(-x))
return 1 / (1 + np.exp(-x))
class Neuron:
def __init__(self, weights, bias):
self.weights = weights
self.bias = bias
def feedforward(self, inputs):
# Weight inputs, add bias, then use the activation function
total = np.dot(self.weights, inputs) + self.bias
return sigmoid(total)
weights = np.array([0, 1]) # w1 = 0, w2 = 1
bias = 4# b = 4
n = Neuron(weights, bias)
x = np.array([2, 3])# x1 = 2, x2 = 3
print(n.feedforward(x))# 0.9990889488055994
构建神经网络
神经元连接在一起就是神经网络 。
神经网络|神经网络原来这么简单,机器学习入门贴送给你
本文插图

两个输入 , 一个含有两个神经元的隐藏层 , 一个含有1个神经元的输出层就构建了一个神经网络 。
需要注意的是 , 可以用多层隐藏层 。 就比如 , 像这样:
神经网络|神经网络原来这么简单,机器学习入门贴送给你


推荐阅读