引言
深度学习作为人工智能领域的一个重要分支,已经取得了令人瞩目的成果。从最初的感知机到如今的 Transformer,神经网络架构经历了翻天覆地的变化。本文将带您回顾深度学习的发展历程,从初体验到前沿技术,让您对这一领域有更深入的了解。
初体验:感知机与多层感知机
感知机
感知机(Perceptron)是深度学习的起源,由Frank Rosenblatt于1957年提出。它是一种简单的线性二分类模型,能够将输入空间分为两部分。感知机通过学习输入数据与输出标签之间的关系,实现基本的分类任务。
import numpy as np
class Perceptron:
def __init__(self, learning_rate=0.01, epochs=100):
self.learning_rate = learning_rate
self.epochs = epochs
self.weights = None
self.bias = None
def fit(self, X, y):
self.weights = np.zeros((X.shape[1], 1))
self.bias = 0
for _ in range(self.epochs):
for xi, yi in zip(X, y):
linear_output = np.dot(xi, self.weights) + self.bias
y_predicted = self activation(linear_output)
update = self.learning_rate * (yi - y_predicted)
self.weights += update * xi
self.bias += update
def activation(self, x):
return 1 if x > 0 else 0
def predict(self, X):
linear_output = np.dot(X, self.weights) + self.bias
return self.activation(linear_output)
多层感知机
随着研究的深入,人们发现感知机无法解决非线性问题。多层感知机(MLP)应运而生,它通过增加隐藏层来学习复杂的非线性关系。
from sklearn.neural_network import MLPClassifier
# 创建多层感知机模型
mlp = MLPClassifier(hidden_layer_sizes=(50,), activation='relu', solver='sgd', learning_rate_init=0.1)
# 训练模型
mlp.fit(X_train, y_train)
# 预测
predictions = mlp.predict(X_test)
演变之路:卷积神经网络与循环神经网络
卷积神经网络(CNN)
卷积神经网络(CNN)在图像识别领域取得了巨大的成功。它通过卷积层提取图像特征,再通过全连接层进行分类。
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# 创建CNN模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 预测
predictions = model.predict(X_test)
循环神经网络(RNN)
循环神经网络(RNN)在处理序列数据方面表现出色。它通过循环连接层,使得神经网络能够记忆历史信息。
from keras.models import Sequential
from keras.layers import SimpleRNN, Dense
# 创建RNN模型
model = Sequential()
model.add(SimpleRNN(units=50, input_shape=(timesteps, features)))
model.add(Dense(1))
# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')
# 训练模型
model.fit(X_train, y_train, epochs=100, batch_size=64)
# 预测
predictions = model.predict(X_test)
前沿技术:Transformer与BERT
Transformer
Transformer是由Google提出的,它在机器翻译、文本摘要等领域取得了显著的成果。它通过自注意力机制,使得神经网络能够同时关注输入序列中的所有元素。
import tensorflow as tf
def scaled_dot_product_attention(q, k, v, mask):
matmul_qk = tf.matmul(q, k, transpose_b=True)
dk = tf.cast(tf.shape(k)[-1], tf.float32)
scaled_attention_logits = matmul_qk / tf.math.sqrt(dk)
if mask is not None:
scaled_attention_logits += (mask * -1e9)
attention_weights = tf.nn.softmax(scaled_attention_logits, axis=-1)
output = tf.matmul(attention_weights, v)
return output, attention_weights
# Transformer模型代码
BERT
BERT(Bidirectional Encoder Representations from Transformers)是Google提出的一种基于Transformer的预训练语言表示模型。它通过预训练和微调,在自然语言处理任务中取得了优异的成绩。
from transformers import BertTokenizer, BertForSequenceClassification
# 加载预训练模型
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertForSequenceClassification.from_pretrained('bert-base-chinese')
# 编码文本
encoded_input = tokenizer("你好,世界!", return_tensors='tf')
# 预测
predictions = model(encoded_input['input_ids'], labels=y_train)
总结
深度学习从感知机到如今的前沿技术,经历了漫长的发展历程。本文回顾了神经网络架构的演变之路,希望能帮助您更好地了解这一领域。在未来,随着技术的不断进步,深度学习将在更多领域发挥重要作用。
