1.千层面
神经网络的本质是千层面,由一层一层的线性代数方程组成,每个方程都表示一段数据与另一段数据相关的可能性
层
神经网络的每一次层可以看作是一次线性代数变换,然后接上一个非线性激活函数。每一层都对输入数据进行变换
线性变换,每层中的线性代数方程是矩阵乘法的形式:
z = W·x + b
W 是权重矩阵,x 是输入, b 是偏置向量, z 是线性变换
最后一层的输出通常表示与输入数据某个目标输出之间的“可能性”或“概率”。
多层
每一层的输出作为下一层的输入,使得数据逐步被加工或提取,每个链接都有一个权重,权重是通过训练来调整的。训练的过程是通过大量的数据,让网络中的权重调整到最优,使得模型能够很好地拟合输入与输出的关系
2. CPU与GPU架构差异
CPU在于处理复杂多样性的任务,每个核心都有复杂的控制逻辑、缓存层次结构、分支预测、流水线等,高性能核心较少(例如4-16个)。CPU擅长处理复杂的顺序任务,你的计算机从加电开始到关闭,这期间加载了类型多样的应用,靠着操作系统调度这期间的各类工作和资源,交给CPU完成。CPU的每个核心则用来处理计算机运行期间的复杂多样性任务,以多线程和多进程的方式来实现。相当于一个管家团队,因此它执行高度复杂的任务,但不适合处理上了大规模的简单数值运算。
相比之下,GPU本身就是为了大规模的简单且相似的计算任务而设计的,有成千上万个较小的处理核心,控制逻辑简单,无需解析复杂指令,重点在于提供更多的核心,实现同时执行大量的相似任务,例如神经网络中的矩阵运算和张量运算。相当于一个搬砖工人团队,无需千头万绪的复杂控制逻辑。
GPU设计之初是为了处理