神经网络基础及其编码实践

神经网络是一种模仿人脑处理信息方式的算法集合,它们在数据集之间寻找关系,并被广泛应用于回归分析、分类、图像识别等多种场景。尽管神经网络试图模仿人脑,但它们之间也存在差异和相似之处。生物神经网络进行的是并行处理,而人工神经网络则进行的是串行处理;前者处理速度较慢(毫秒级),后者则快得多(纳秒级)。

人工神经网络架构

人工神经网络由多层构成,每层执行特定功能,随着模型复杂度的增加,层数也会增加,因此也被称为多层感知器。最基本的神经网络包括输入层、隐藏层和输出层。输入层接收输入信号并传递给下一层,最终输出层给出最终预测,这些神经网络需要通过训练数据进行训练,类似于机器学习算法,然后才能解决特定问题。

感知器详解

感知器是构成多层感知器的基本单元,由多个神经元组成。每个神经元都有权重和偏置,基于这些进行计算。例如,一个神经元的计算可以表示为:组合 = 偏置 + 权重 * 输入(F = w1*x1 + w2*x2 + w3*x3),然后通过激活函数进行处理。激活函数的作用是决定哪些节点应该激活以进行特征提取,最终计算输出。常见的激活函数包括sigmoid、ReLU、Leaky ReLU、tanh等。

神经网络的工作原理

首先,信息被输入到输入层,然后传递到隐藏层,这些层之间的连接为每个输入分配随机权重。然后为每个输入神经元添加偏置,将权重和偏置的组合通过激活函数传递。激活函数负责决定哪些节点应该激活以进行特征提取,最终计算输出。这个过程被称为前向传播。得到输出后,模型会将其与原始输出进行比较,了解误差,然后在反向传播中更新权重以减少误差。这个过程会持续进行一定数量的迭代(epoch)。最终,模型的权重得到更新,完成预测。

神经网络的优势

人工神经网络能够学习和模拟非线性和复杂的关系,因为许多输入和输出之间的关系是非线性的。训练完成后,人工神经网络可以从未见数据中推断出未见的关系,因此具有泛化能力。与许多机器学习模型不同,人工神经网络对数据集没有限制,如数据应该呈高斯分布或其他分布。

人工神经网络的应用非常广泛,包括图像预处理和字符识别、预测、信用评级、欺诈检测、投资组合管理等。

现在让通过编码来理解和实践这些概念。首先,需要理解并加载数据集。将使用NumPy、pandas等库,并从Keras库中导入Sequential和Dense类。

import numpy as np import pandas as pd from keras.models import Sequential from keras.layers import Dense # 使用Pima Indians糖尿病发病数据集,这是一个标准的机器学习数据集 dataset = pd.read_csv('raw.csv') print(dataset.head()) X = dataset.iloc[:,0:8] y = dataset.iloc[:,8] print(X) print(y)

接下来,定义Keras模型。在Keras中,模型被定义为层的序列,每层都添加在另一层之后。输入应包含输入特征,并在创建第一层时通过input_dims参数指定。这里input_dims将是8。

model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid'))

在编译Keras模型时,必须指定用于计算误差的损失函数、用于更新权重的优化器以及任何指标。在这种情况下,将使用binary_crossentropy作为损失参数,因为这是一个二元分类问题。这里将优化器设置为adam,因为它可以自动调整自己,并在广泛的問題中给出良好的结果。最后,将通过metrics参数收集和报告分类准确性。

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, epochs=150, batch_size=10) _, accuracy = model.evaluate(X, y) print('Accuracy: %.2f' % (accuracy*100)) predictions = model.predict(X) rounded = [round(x[0]) for x in predictions]
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485