凸还是非凸?交叉熵在softmax和neural network中的不同凸性

交叉熵在分类问题中作为损失函数,尤其在logistic回归和神经网络中常见。本文探讨了其在softmax回归中的凸性质,通过Hessian矩阵的半正定性证明其在该场景下是(非严格)凸函数。然而,在神经网络中,由于参数的对称性,交叉熵不再是凸函数,可能存在多个局部最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

交叉熵损失函数

交叉熵是极大似然估计的直接产物,常在分类问题中作为logistic回归和neural network的损失函数出现(据说在回归问题中最小均方误差使用较多)。

在优化过程中,函数的凸性对优化有较大影响,对于凸函数,局部最优解等同于全局最优解,因而能够通过基于梯度的方法找到全局最优解,而非凸函数局部最优解不等于全局最优解,使用基于梯度的方法不能保证找到全局最优解。交叉熵的凸性较为复杂,它在logistic回归中是权重 w w 的凸函数,但在neural network中却不是凸的。下面证明这一结论。

softmax回归

二阶可微函数为(非严格)凸函数的充要条件为Hessian矩阵半正定,下面计算softmax回归的交叉熵的Hessian矩阵,简洁起见省去bias项。设目前面对的分类问题是k分类,则损失函数为

C ( w 1 , w 2 , , w k ) = 1 m [ i = 1 m j = 1 k 1 { y ( i ) = j } log e w j T x ( i ) l = 1 k e w l T x ( i ) ]

1{ } 1 { ⋅ } 是示性函数。

注意softmax函数的导数的特殊性:


aj=ewTjxkl=1ewTlx a j = e w j T x ∑ l = 1 k e w l T x

nj n ≠ j
在Python中导入并使用`NeuralNetwork`类,首先你需要确保你已经安装了支持深度学习的库,如TensorFlow或Keras。以下是使用这两个库的一个例子: **使用TensorFlow:** ```python # 首先安装 TensorFlow(如果尚未安装) pip install tensorflow # 导入所需的模块 import tensorflow as tf # 定义神经网络类 class NeuralNetwork(tf.keras.models.Model): def __init__(self, input_shape, num_classes): super(NeuralNetwork, self).__init__() self.conv_layer = tf.keras.layers.Conv2D(32, (3, 3), activation='relu') self.flatten = tf.keras.layers.Flatten() self.dense_layer = tf.keras.layers.Dense(num_classes, activation='softmax') def call(self, inputs): x = self.conv_layer(inputs) x = self.flatten(x) return self.dense_layer(x) # 创建一个实例并使用它 model = NeuralNetwork((28, 28, 1), 10) # 输入形状类别数 ``` **使用Keras(Keras是基于TensorFlow的高级API):** ```python from keras.models import Sequential from keras.layers import Dense, Conv2D, Flatten # 定义神经网络类(Keras内置函数可以直接使用) def create_model(input_shape, num_classes): model = Sequential([ Conv2D(32, (3, 3), activation='relu', input_shape=input_shape), Flatten(), Dense(num_classes, activation='softmax') ]) return model # 使用创建的模型 model = create_model((28, 28, 1), 10) ``` 记住,你需要根据实际需求调整输入形状、层数激活函数等参数。当你准备好训练数据后,就可以通过`.fit()`方法开始训练你的模型了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值