神经网络是受生物神经网络启发的人工系统。这些系统通过暴露于各种数据集和示例来学习执行任务,而无需任何特定于任务的规则。这个想法是,系统可以根据传递的数据生成识别特征,而无需对这些数据集进行预编程的理解即可对其进行编程。
神经网络基于阈值逻辑的计算模型。阈值逻辑是算法和数学的结合。神经网络要么基于对大脑的研究,要么基于神经网络在人工智能中的应用。这项工作导致了有限自动机理论的改进。
典型神经网络的组成部分涉及神经元,连接,权重,偏差,传播函数和学习规则。神经元将收到输入来自具有激活作用的前神经元 , 临界点 ,激活函数f和输出函数 。连接由连接,权重和偏见组成,它们决定了神经元的方式将输出传输到神经元 。传播计算输入并输出输出,并将前神经元函数与权重相加。学习规则修改网络中变量的权重和阈值。
有监督与无监督学习:
神经网络通过监督学习来学习;监督机器学习涉及输入变量x和输出变量y 。该算法从训练数据集中学习。有了每个正确的答案,算法就会对数据进行迭代预测。当算法达到可接受的性能水平时,学习将停止。
无监督机器学习具有输入数据X,没有相应的输出变量。目的是为数据的基础结构建模,以进一步了解数据。监督机器学习的关键词是分类和回归。对于无监督的机器学习,关键字是聚类和关联。
神经网络的发展:
希伯来语学习涉及神经可塑性。希伯来语学习不受监督,并且涉及长期的增强作用。希伯来语学习涉及模式识别和“异或”电路;处理if-then规则。
反向传播解决了Hebbian学习无法处理的异或问题。这也允许多层网络是可行和有效的。如果发现错误,则通过修改每个节点的权重来解决每个层的错误。这导致了支持向量机,线性分类器和最大池化的发展。消失的梯度问题会影响使用反向传播和递归神经网络的前馈网络。这就是所谓的深度学习。
基于硬件的设计用于生物物理模拟和神经营养计算。它们具有大规模的成分分析功能,并且卷积创建了具有模拟功能的新型神经计算。这也解决了多层前馈神经网络的反向传播问题。
卷积网络用于在卷积层和最大池化层之间交替,而连接层(完全或稀疏连接)与最终分类层相连。学习是在没有监督的情况下进行的。每个过滤器等效于必须训练的权重向量。位移方差必须确保处理大型和大型神经网络。开发网络中正在解决此问题。
神经网络的类型
可以使用七种类型的神经网络。
- 第一个是具有三层或更多层并使用非线性激活函数的多层感知器。
- 第二个是使用多层感知器变体的卷积神经网络。
- 第三个是使用权重进行结构化预测的递归神经网络。
- 第四个是递归神经网络,该神经网络以有向循环在神经元之间建立连接。长短期记忆神经网络使用递归神经网络架构,并且不使用激活函数。
- 最后两个是序列到序列模块,该模块使用两个递归网络和浅层神经网络,这些浅层神经网络从大量文本中产生向量空间。这些神经网络是下面演示的基本神经网络的应用。
对于该示例,神经网络将使用三个向量:属性X的向量,类Y的向量和权重W的向量。代码将使用100次迭代将属性拟合到类中。通过权重向量W迭代后,生成预测,加权并输出预测。神经网络处理反向传播。
例子:
Input :
X { 2.6, 3.1, 3.0,
3.4, 2.1, 2.5,
2.6, 1.3, 4.9,
0.1, 0.3, 2.3,};
y {1, 1, 1};
W {0.3, 0.4, 0.6};
Output :
0.990628
0.984596
0.994117
下面是实现:
import numpy as np
# array of any amount of numbers. n = m
X = np.array([[1, 2, 3],
[3, 4, 1],
[2, 5, 3]])
# multiplication
y = np.array([[.5, .3, .2]])
# transpose of y
y = y.T
# sigma value
sigm = 2
# find the delta
delt = np.random.random((3, 3)) - 1
for j in range(100):
# find matrix 1. 100 layers.
m1 = (y - (1/(1 + np.exp(-(np.dot((1/(1 + np.exp(
-(np.dot(X, sigm))))), delt))))))*((1/(
1 + np.exp(-(np.dot((1/(1 + np.exp(
-(np.dot(X, sigm))))), delt)))))*(1-(1/(
1 + np.exp(-(np.dot((1/(1 + np.exp(
-(np.dot(X, sigm))))), delt)))))))
# find matrix 2
m2 = m1.dot(delt.T) * ((1/(1 + np.exp(-(np.dot(X, sigm)))))
* (1-(1/(1 + np.exp(-(np.dot(X, sigm)))))))
# find delta
delt = delt + (1/(1 + np.exp(-(np.dot(X, sigm))))).T.dot(m1)
# find sigma
sigm = sigm + (X.T.dot(m2))
# print output from the matrix
print(1/(1 + np.exp(-(np.dot(X, sigm)))))
[[ 0.99999294 0.99999379 0.99999353]
[ 0.99999987 0.99999989 0.99999988]
[ 1. 1. 1. ]]
局限性:
神经网络用于监督模型。它不处理无监督的机器学习,也不对数据进行聚类和关联。它还缺乏在计算上更昂贵的神经网络中可以找到的准确性水平。基于Andrew Trask的神经网络。而且,神经网络不适用于X的行数和列数与Y和W的行数不匹配的任何矩阵。
下一步将是创建一个无监督的神经网络,并通过更多的迭代和线程来增加该监督模型的计算能力。
资源:
- http://neuralnetworksanddeeplearning.com
- https://skymind.ai/wiki/neural-network
- http://pages.cs.wisc.edu/~bolo/shipyard/neural/local.html
- https://iamtrask.github.io/2015/07/12/basic-python-network/