神经网络中每个节点称为神经元,由两部分组成:
加权和:将所有输入加权求和。
非线性变换(激活函数):加权和的结果经过一个非线性函数变换,让神经元计算具备非线性的能力。
大量这样的节点按照不同的层次排布,形成多层的结构连接起来,即称为神经网络。
从输入计算输出的过程,顺序从网络前至后。
以图形化的方式展现神经网络的计算逻辑又称为计算图,也可以将神经网络的计算图以公式的方式表达:
提出假设的方法,例如牛顿的第二定律,运用斜滑动法和平滑动法
世界上的可能关系千千万,漫无目标的试探YYY~XXX之间的关系显然是十分低效的。因此假设空间先圈定了一个模型能够表达的关系可能,
损失函数:模型预测值和真实值差距的评价函数
寻找最优之前,我们需要先定义什么是最优,即评价一个YYY~XXX关系的好坏的指标。通常衡量该关系是否能很好的拟合现有观测样本,将拟合的误差最小作为优化目标。
实现损失最小的方法称为优化算法,也成为寻解算法
设置了评价指标后,就可以在假设圈定的范围内,将使得评价指标最优(损失函数最小/最拟合已有观测样本)的YYY~XXX关系找出来,这个寻找最优解的方法即为优化算法。最笨的优化算法即按照参数的可能,穷举每一个可能取值来计算损失函数,保留使得损失函数最小的参数作为最终结果。
1、类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?模型假设和参数是什么?评价函数(损失)是什么?

2、为什么说深度学习工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?

为什么要以均方误差作为损失函数?
即将模型在每个训练样本上的预测误差加和,来衡量整体样本的准确性。这是因为损失函数的设计不仅仅要考虑“合理性”,同样需要考虑“易解性”
神经网络的标准结构中每个神经元由加权和与非线性变换构成,然后将多个神经元分层的摆放并连接形成神经网络。线性回归模型可以认为是神经网络模型的一种极简特例,是一个只有加权和、没有非线性变换的神经元(无需形成网络)

import numpy as np
import json
datafile = './work/housing.data' # 506行14列
data = np.fromfile(datafile,sep=' ') # 7084 = 14 * 506,一行数据显示
data
已知,一个房子的13种影响因素,存储在x矩阵中,以及该房子的房价y。
那么N个房子的表示则是:x[ ] N x13, 即N行13列,y[ ] Nx1,即N行1列。
# 14个影响房价的特征,X
feature_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE','DIS',
'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
# 长度14
feature_num = len(feature_names) # 14列
# print(data.shape[0] // feature_num) # 7084//14 向下取整保留整数
# 14*506/14,14
# 即506*14 这个维度的,行506,列14
data = data.reshape([data.shape[0]// feature_num), feature_num])

# 取data的80%的数据,训练集
ratio = 0.8
# data.shape[0] = 506行
# data[0] = 14 14个数据
# 测试数据值506*0.8
offset = int(data.shape[0]*ratio)
# 寻来数据集,按列切分,从0到offset
training_data = data[:offset]
# 输出404,14列
training_data.shape