初识:神经网络(Neural Networks)

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识:神经网络(Neural Networks)相关的知识,希望对你有一定的参考价值。

神经网络介绍

人工神经网络(Artificial Neural Networks)也简称为神经网络(NN)。是模拟人类大脑神经网络的结构和行为。
20 世纪 80 年代以来,人工神经网络(Artificial Neural Network)研究所取得的突破性进展。神经网络辨识是采用神经网络进行逼近或建模,神经网络辨识为解决复杂的非线性、 不确定、未知系统的控制问题开辟了新途径。
神经网络主要应用领域有:模式识别与图象处理(语音、指纹、故障检测和图象压缩等)、 控制与优化、系统辨识、预测与管理(市场预测、风险分析)、通信等。

神经网络原理

经典的神经网络有以下三个层次组成:输入层(input layer), 隐藏层 (hidden layers), 输出层 (output layers)。

在这里插入图片描述

每个圆圈就是一个神经元。每层与每层之间是没有连接的,但是层与层之间都有连接。 每个连接都是带有权重值的。隐藏层和输出层的神经元由输入的数据计算输出,但输入层神 经元只有输入,一般指一个训练数据样本的数据。

在这里插入图片描述

神经系统的基本构造是神经元(神经细胞),它是处理人体内各部分之间相互信息传递的 基本单元。每个神经元都由一个细胞体,一个连接其他神经元的轴突和一些向外伸出的其它较短分支—树突组成。
轴突功能是将本神经元的输出信号(兴奋)传递给别的神经元,其末端的许多神经末梢使得兴奋可以同时传送给多个神经元。树突的功能是接受来自其它神经元的兴奋。神经元细胞体将接收到的所有信号进行简单地处理后,由轴突输出。神经元的轴突与另外神经元神经末梢相连的部分称为突触。

感知机

感知机是一类人造神经元,模拟这样的大脑神经网络处理数据的过程。

感知机模型如下图:

在这里插入图片描述
其中 x1,x2 为输入,b 为偏置,激活函数被称为符号函数sign function

感知机是一种基本的分类模型,类似于逻辑回归。不同的是感知机的逻辑函数用的是 sign,而逻辑回归用的是 Sigmoid 函数,感知机也具有连接权重和偏置
在这里插入图片描述
感知机可以用来处理线性可分类问题,线性可不可分简单来说,就是可不可以用一条直线把图上两类点划分开。如第二张图所示,无论怎么画直线都无法将两类点分区开。

在这里插入图片描述
在这里插入图片描述

对于线性不可分问题一般用多层神经网络,
打开 http://playground.tensorflow.org/。
使用 playground 体会感知机的分类。

激活函数

Sigmoid 函数

sigmoid 函数 由于其单增及反函数单增等性,sigmoid 函数常被用做神经网络的激活函数,将变量映射到 0,1 之间。所以主要用来做二分类神经网络。 由于其平滑、易于求导的特性,处理特征相差不是很大或者复杂的数据效果比较好。

  • sigmoid 函数的公式

在这里插入图片描述

  • 使用 matplotlib 绘制 Sigmoid 函数
import numpy as np
import matplotlib.pyplot as plt

# 定义sigmoid函数:将变量定位0-1之间
def sigmoid(x):
    return 1.0 / (1+np.exp(-x))

# 生成一串数-10 -- 10
x = np.arange(-10, 10)

# 指定画布大小
fig, ax = plt.subplots(figsize=(12, 4))

# 绘制, 指定绘制颜色, x, y, 参数
ax.plot(x, sigmoid(x), 'r')

# 显示绘图
plt.show()

执行结果如图所示
在这里插入图片描述

双曲正切函数(tanh)

双曲正切函数(tanh) 是双曲正弦函数(sinh)与双曲余弦函数(cosh)的比值,语法格式如下:
在这里插入图片描述

双曲正切函数(tanh)与 tf.sigmoid 非常接近,且与后者具有类似的优缺点。
tf.sigmoid 和 tf.tanh 的主要区别在于后者的值域为[-1.0,1.0]。

  • 使用 matplotlib 绘制 tanh 函数
import numpy as np
import matplotlib.pyplot as plt

# 准备x坐标, 等间距-10 10 之间100个点
x = np.linspace(-10, 10, 100)

# y直接调用numpy函数封装好的
y = np.tanh(x)

# 绘图
plt.plot(x, y)

# 显示
plt.show()

在这里插入图片描述

后序

陌生领域,感谢尚学堂的视频带领

初步学习神经网络,还是蛮激动的。
希望以后可以入门 机器学习、人工智能 等领域

加油!

以上是关于初识:神经网络(Neural Networks)的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch:Neural Networks

Neural Networks: Learning 学习笔记

卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition

Stanford机器学习笔记-5.神经网络Neural Networks (part two)

PyTorch Tutorials 3 Neural Networks

Stanford机器学习笔记-4. 神经网络Neural Networks (part one)