神经网络(深度学习)学习到的是什么?一个含糊的回答是,学习到的是数据的本质规律。但具体这本质规律究竟是什么呢?要回答这个问题,我们可以从神经网络的原理开始了解。
一、神经网络的原理神经网络学习就是一种特征的表示学习,把原始数据通过一些简单非线性的转换成为更高层次的、更加抽象的特征表达。深度网络层功能类似于“生成特征”,而宽度层类似于“记忆特征”,增加网络深度可以获得更抽象、高层次的特征,增加网络宽度可以交互出更丰富的特征。通过足够多的转换组合的特征,非常复杂的函数也可以被模型学习好。
可见神经网络学习的核心是,学习合适权重参数以对数据进行非线性转换,以提取关键特征或者决策。即模型参数控制着特征加工方法及决策。了解了神经网络的原理,我们可以结合如下项目示例,看下具体的学习的权重参数,以及如何参与抽象特征生成与决策。
二、神经网络的学习内容2.1简单的线性模型的学习我们先从简单的模型入手,分析其学习的内容。像线性回归、逻辑回归可以视为单层的神经网络,它们都是广义的线性模型,可以学习输入特征到目标值的线性映射规律。
如下代码示例,以线性回归模型学习波士顿各城镇特征与房价的关系,并作出房价预测。数据是波士顿房价数据集,它是统计20世纪70年代中期波士顿郊区房价情况,有当时城镇的犯罪率、房产税等共计13个指标以及对应的房价中位数。
importpandasaspdimportnumpyasnpfromkeras.datasetsimportboston_housing#导入波士顿房价数据集(train_x,train_y),(test_x,test_y)=boston_housing.load_data()fromkeras.layersimport*fromkeras.modelsimportSequential,Modelfromtensorflowimportrandomfromsklearn.metricsimportmean_squared_errornp.random.seed(0)#随机种子random.set_seed(0)#单层线性层的网络结构(也就是线性回归):无隐藏层,由于是数值回归预测,输出层没有用激活函数;model=Sequential()model.add(Dense(1,use_bias=False))model.