如何从头开始设计一个深度神经网络?
任何机器学习算法的目标都是建立一个假设函数y = f(X) ,其中X是数据或特征,y是目标/标签。其中一些函数是参数化的,例如线性/逻辑回归、SVM,而其他函数则是非参数化的(基于树的模型)。如果模型具有固定数量的参数,并且函数形式不随数据变化,则该模型是参数化的。
神经网络也是参数化的。然而,神经网络是学习该假设函数的最原始形式,因为与其他算法不同,这里没有任何假设。您需要定义架构并选择训练超参数,例如批量大小、优化器、学习率、时期等。
训练神经网络的步骤如下:
训练:
1、将数据拆分为训练集和验证集
2、定义基本模型架构。从基本的多层感知器 (MLP) 开始。
A 层数
B 每层神经元数量
C 每层的激活函数(中间/隐藏层和输出层)
D 损失函数
3、初始化随机权重和偏差
4、对于一个纪元:
A 对于每个批次:
i.Forward Pass:通过网络传播并计算损失
ii.向后传递(反向传播):通过网络反向传播,计算损失相对于权重和偏差的梯度。使用优化器更新权重和偏差。
B 计算该时期所有批次的平均训练损失
C 使用纪元结束时的最终权重和偏差计算验证损失
5、对大量的 epoch 重复步骤 4,直到损失收敛。监控学习曲线(损失、准确度曲线)
推理:
1.一旦模型训练完毕,将其冻结,即可以将模型置于评估模式。任何梯度信息都可以被删除。
2.使用最终权重和偏差,以批量方式预测测试数据。
蓝海大脑 京ICP备18017748号-1