user100566 @ 2024-11-15 16:54:46
参考原文
P1038 [NOIP2003 提高组] 神经网络
在兰兰的模型之中,神经网络中的神经元分为几层;称为输入层、输出层,和若干个中间层。
非输入层的神经元开始时状态必然为 0。
若输出层的神经元最后状态均小于等于 0,则输出 NULL
。
数学证明
记 C_i^0 表示神经元 i 的初始状态,C_i^1 表示神经元 i 的最终状态。
\text{定理}\ 1: \forall \text{神经元}\ i\in\text{输出层},C_i^0=0
\text{证明}:
\because \text{非输入层的神经元开始时状态必然为}\ 0,\text{输出层是非输入层}
\therefore \text{输出层的神经元开始时状态必然为}\ 0
\therefore \forall \text{神经元}\ i\in\text{输出层},C_i^0=0
\text{定理}\ 2: \forall p=0\ \text{的神经网络},\forall \text{神经元}\ i\in \text{神经网络},C_i^1=C_i^0
\text{证明}:
\because p=0
\therefore \text{神经网络不存在信号传送}
\therefore \forall \text{神经元}\ i\in\text{神经网络},C_i\text\ {不发生变化}
\therefore \forall \text{神经元}\ i\in \text{神经网络},C_i^1=C_i^0
\text{定理}\ 3: \forall p=0\ \text{的神经网络},\text{答案为}\ \texttt{NULL}
\text{证明}:
\text{假设存在反例答案不为}\ \texttt{NULL}
\therefore\neg \text{输出层的神经元最后状态均小于等于}\ 0
\therefore\exists\text{神经元}\ i\in\text{输出层},C_i^1>0
\therefore\text{由定理}\ 2,\exists\text{神经元}\ i\in\text{输出层},C_i^0>0
\text{与定理}\ 1\ \text{矛盾},\text{假设不成立}
测试点问题
测试点 #5:
## 更正
这是 #5 输出 `NULL` 的部分[代码](https://www.luogu.com.cn/record/188853102):
```cpp
if(C==0){
output[i] = true;
val[i] = -U;
}else{
output[i] = false;
val[i] = C;
}
```
这是 #5 输出测试点答案的部分[代码](https://www.luogu.com.cn/record/188854546):
```cpp
output[i] = true;
if(C==0){
val[i] = -U;
}else{
val[i] = C;
}
```
根据原文和数学证明,上面的代码才是正确的:**开始时状态不为 $0$ 的神经元不为输出层神经元**。
## 结论
建议修正 #5 的测试数据,正确的测试数据应该能让[正确的代码](https://www.luogu.com.cn/record/188853102) AC,让[错误的代码](https://www.luogu.com.cn/record/188854546) WA。
by user100566 @ 2024-11-15 17:16:36
@5k_sync_closer
神经网络中的神经元分为几层;称为输入层、输出层,和若干个中间层。
原文中的这句话就说明了输入层、输出层、和中间层涵盖了神经网络,且这三层是互斥的,既然一个神经元在输出层,那么它就不能在输入层。