1)回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域,回归经常用来表示输入和输出之间的关系。
2)一般回归是和预测有关,比如预测价格(房屋,股票等)
3)线性回归的基本元素
首先,假设自变量x和因变量y之间的关系是线性的, 即y可以表示为x中元素的加权和,这里通常允许包含观测值的一些噪声; 其次,我们假设任何噪声都比较正常,如噪声遵循正态分布。
4)深度学习实践者很少会去花费大力气寻找这样一组参数,使得在训练集上的损失达到最小。 事实上,更难做到的是找到一组参数,这组参数能够在我们从未见过的数据上实现较低的损失, 这一挑战被称为泛化(generalization)。
5)对于线性回归,每个输入都与每个输出(在本例中只有一个输出)相连, 我们将这种变换(图中的输出层) 称为全连接层(fully-connected layer)或称为稠密层(dense layer)
**最小化均方误差(MSE)等价于对线性模型进行极大似然估计(MLE)**,这句话的意思是:在高斯噪声的假设下,通过最小化均方误差(MSE)来优化线性回归模型参数,和通过极大似然估计(MLE)来优化线性回归模型参数,这两种方法是等价的,即它们最终会得到相同的模型参数估计结果。
-
机器学习模型中的关键要素是训练数据、损失函数、优化算法,还有模型本身。
-
矢量化使数学表达上更简洁,同时运行的更快。
-
最小化目标函数和执行极大似然估计等价。
-
线性回归模型也是一个简单的神经网络。
6)线性回归的关键思想
核心思想总结
线性回归的核心思想是:通过线性方程建立自变量(特征)和因变量(目标)之间的数学关系,找到最优拟合直线(或超平面),使预测值与实际值的误差平方和最小化.
7)batch_size
a)训练模型时要对数据集进行遍历,每次抽取一小批量样本,并使用它们来更新我们的模型。 由于这个过程是训练机器学习算法的基础,所以有必要定义一个函数, 该函数能打乱数据集中的样本并以小批量方式获取数据。
b)我们定义一个输入函数, 该函数接收批量大小、特征矩阵和标签向量作为输入,生成大小为batch_size
的小批量。 每个小批量包含一组特征和标签。
通常,我们利用GPU并行运算的优势,处理合理大小的“小批量”。 每个样本都可以并行地进行模型计算,且每个样本损失函数的梯度也可以被并行计算。 GPU可以在处理几百个样本时,所花费的时间不比处理一个样本时多太多。
c)当我们运行迭代时,我们会连续地获得不同的小批量,直至遍历完整个数据集。 上面实现的迭代对教学来说很好,但它的执行效率很低,可能会在实际问题上陷入麻烦。 例如,它要求我们将所有数据加载到内存中,并执行大量的随机内存访问。 在深度学习框架中实现的内置迭代器效率要高得多, 它可以处理存储在文件中的数据和数据流提供的数据。
8)模型训练流程:
生成数据-->读取数据集-->初始化模型参数-->定义模型-->定义损失函数-->定义优化算法-->训练
9)定义模型
对于标准深度学习模型,我们可以使用框架的预定义好的层。这使我们只需关注使用哪些层来构造模型,而不必关注层的实现细节。 我们首先定义一个模型变量net
,它是一个Sequential
类的实例。 Sequential
类将多个层串联在一起。 当给定输入数据时,Sequential
实例将数据传入到第一层, 然后将第一层的输出作为第二层的输入,以此类推。 在下面的例子中,我们的模型只包含一个层,因此实际上不需要Sequential
。 但是由于以后几乎所有的模型都是多层的,在这里使用Sequential
会让你熟悉“标准的流水线”。
10)独热编码
独热编码(one-hot encoding)。 独热编码是一个向量,它的分量和类别一样多。 类别对应的分量设置为1,其他所有分量设置为0。 在我们的例子中,标签y将是一个三维向量, 其中(1,0,0)对应于“猫”、(0,1,0)对应于“鸡”、(0,0,1)对应于“狗”:
11)Softmax运算
要将输出视为概率,我们必须保证在任何数据上的输出都是非负的且总和为1。 此外,我们需要一个训练的目标函数,来激励模型精准地估计概率。 例如, 在分类器输出0.5的所有样本中,我们希望这些样本是刚好有一半实际上属于预测的类别。 这个属性叫做校准(calibration)。
-
softmax运算获取一个向量并将其映射为概率。
-
softmax回归适用于分类问题,它使用了softmax运算中输出类别的概率分布。
-
交叉熵是一个衡量两个概率分布之间差异的很好的度量,它测量给定模型编码数据所需的比特数。