深度学习
文章目录
什么是深度学习
深度学习是一个复杂的机器学习算法,它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据
深度学习和机器学习的区别
神经网络(ANN)

什么是神经网络

神经网络可以分为生物神经网络和人工神经网络,人工神经网络是模仿生物神经网络设计的,一般分为三层:分别是输入曾输出层和隐藏层
隐藏层是计算机模拟人脑的过程
生物神经网络
生物神经网络(Biological Neural Networks)一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动
人工神经网络
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
人工神经网络的特点
- 具有自我学习功能
- 具有联想存储功能
- 具有高速寻找优化解的能力
人工神经网络的优势
人工神经网络完成非常轻松得完成下面5类功能
- 模式分类
- 聚类
- 回归与拟合
- 优化计算
- 数据压缩
人工神经网络分类
根据拓扑结构分为向前网络和反馈网络
- 向前网络是网络中各个神经元接收前一级的输入,并输出到下一级,没有反馈,可以用一个有向无环路图表示,例如:感知器、BP神经网络
- 反馈网络是网络内神经元间的反馈,这种神经网络的信息处理是状态的变换,可以用一个无向的完备图表示,例如:BAM双向联想记忆网络
感知器
感知器是人工神经网络中的一种典型结构,它的主要的特点是结构简单,对所能解决的问题 存在着收敛算法,并能从数学上严格证明,从而对神经网络研究起了重要的推动作用。
单层感知器
输入和输出端之间没有隐藏层,只能分类简单线性可分的模型(比如二分类),只能画出一条直线
常见于非线性决策边界


多层感知器
输入和输出端之间多了隐藏层
可以实现非线性分类,并且可以画多条直线

感知器优缺点
优点
模型简单,易于实现
缺点
无法完美得处理线程不可分得训练数据
最终结果受训练集的数据影响很大
激活函数
实现神经元输入和输出的非线性化。加入非线性因素,可以画曲线

常见激活函数




BP反向传播神经网络
用于对神经网络进行优化,对超参数的部分进行模拟,直到修正到完美的参数
比如:真实值是100 预测值是101,算超参数,进行修正,直到预测值变成100
常用梯度下降法
梯度下降法
梯度下降法是一种求解局部函数极小值点迭代优化算法
给定一个点、计算当前的导数,沿着导数正负反向取值,得到新的点,最后重复之前的步骤,不断重复,直到满足最终条件

构建一个简单的神经网络
你已经学会了上面的理论,现在来构建一个最简单的神经网络来预测D要不要去爬山吧!
目标
根据A、B、C、D的爬山数据,预测D去不去爬山
背景
A、B、C、D经常一起去爬山
用1表示去爬山 0表示没去爬山
前5次数据是
A B C D
0 1 0 1
1 1 0 1
1 0 1 0
0 0 1 0
0 1 1 1
需要预测的数据:
A B C D
0 1 0 ?
创建数据
引入库
import numpy as np
前五次数据可以用矩阵进行表示
ABC去爬山的数据可以作为输入
X = np.array([[0,1,0],[1,1,0],[1,0,1],[0,0,1],[0,1,1]])
D的数据可以作为输出
Y = np.array([[1],[1],[0],[0],[1]])
初始化假设
用随机数做假设,假设D去不去爬山和ABC去不去爬山之间相关系数的权重为weights
np.random.seed(1)
weights = 2 * np.random.random((3,1))-1
输入神经元进行计算
假设weights算出的值接近0,表示D不去爬山的可能性大,反之接近1则去爬山的可能性大
使用前五次D、的数据Y - 利用假设关系得到的output数值 最后得到误差error
通过不断循环调整假设关系weights,减少误差,最终得到误差最小的一组关系系数weights
for it in range(100000):
output = 1/(1+np.exp(-np.dot(X,weights)))
error = Y - output
delta = error * output *(1-output)
weights += np.dot(X.T,delta)
输出运行结果
print("误差为:\n",error)
print("相关系数为:\n",weights)
probability = 1/(1+np.exp(-np.dot([[0,1,0]],weights)))
print("D去爬山的概率为:\n",probability)

可以看到D去爬山的概率为0.999
完整代码
import numpy as np
# 创建数据
X = np.array([[0,1,0],[1,1,0],[1,0,1],[0,0,1],[0,1,1]])
Y = np.array([[1],[1],[0],[0],[1]])
# 初始化假设
np.random.seed(1)
weights = 2 * np.random.random((3,1))-1
# 输入神经元进行计算
for it in range(100000):
output = 1/(1+np.exp(-np.dot(X,weights)))
error = Y - output
delta = error * output *(1-output)
weights += np.dot(X.T,delta)
# 输出运行结果
print("误差为:\n",error)
print("相关系数为:\n",weights)
probability = 1/(1+np.exp(-np.dot([[0,1,0]],weights)))
print("D去爬山的概率为:\n",probability)
本文介绍了深度学习的基本概念,包括其与机器学习的区别,以及人工神经网络的工作原理、特点和优势。详细讲解了单层和多层感知器,并探讨了激活函数和反向传播神经网络。通过实例展示了如何构建一个简单的神经网络来预测爬山行为的概率。
3万+

被折叠的 条评论
为什么被折叠?



