机器学习的核心在于从数据中提取规律和特征,并用于分类或预测。对于识别手写数字,如果人工设计一个识别算法逻辑是十分困难的。一种方法是任务在数据中提取更重要的特征量,然后利用机器学习算法如SVM或KNN。而神经网络的方法则是完全由机器自主提取特征,中间没有任何人工干预
1 训练数据和测试数据
一般来说,机器学习的数据分为训练数据(或监督数据)和测试数据。首先使用训练数据寻找最优参数,然后使用测试数据评估模型泛化能力。
泛化能力指的是模型处理未被观察到数据的能力,是机器学习的目标。
如果模型只能处理特定数据集,泛化能力差,这种状态被称为过拟合(over fitting)
2 损失函数
神经网络利用损失函数作为指标表现现在的状态,再利用这一指标寻找更优权重参数。损失函数表现了网络和数据集不拟合程度,损失函数越低,网络更优
均方差法(mean squared error):
yk: 神经网络输出
tk:监督数据
(k代表数据维数)
import numpy as np
def mean_squared_error(y, t):
return 0.5 * np.sum((y - t) ** 2)
t = np.array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0])
y = np.array([0.1, 0.05, 0.6, 0, 0.05, 0.1, 0, 0.1,