Numy使用笔记
NumPy 数组( np.array )可以生成 N 维数组,即可以生成一维数组、
二维数组、三维数组等任意维数的数组。数学上将一维数组称为向量,
将二维数组称为矩阵。另外,可以将一般化之后的向量或矩阵等统
称为张量 (tensor)。本书基本上将二维数组称为“矩阵”,将三维数
组及三维以上的数组称为“张量”或“多维数组”。
广播
NumPy 中,形状不同的数组之间也可以进行运算。之前的例子中,在
2×2 的矩阵 A 和标量 10 之间进行了乘法运算。在这个过程中,如图 1-1 所示,
标量 10 被扩展成了 2 × 2 的形状,然后再与矩阵 A 进行乘法运算。这个巧妙
的功能称为广播 (broadcast)。
matplotlib的使用笔记
1 | import numpy as np |
感知机
感知机接收多个输入信号,输出一个信号。
x 1 、x 2 是输入信号,
y 是 输 出 信 号,w 1 、w 2 是 权 重(w 是 weight 的 首 字 母)。图 中 的 ○ 称 为“神
经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重(w 1 x 1 、w 2 x 2 )
。神经元会计算传送过来的信号的总和,只有当这个总和超过
了某个界限值时,才会输出 1。这也称为“神经元被激活” 。这里将这个界
限值称为阈值,用符号 θ 表示。
未激活神经元
y = 0 = (w1x1+w2x2)<=θ
激活神经元
y = 1 = (w1x1+w2x2)>θ
权重相当于电流里所说的电阻。电阻是决定电流流动难度的参数,
电阻越低,通过的电流就越大。而感知机的权重则是值越大,通过
的信号就越大。不管是电阻还是权重,在控制信号流动难度(或者流
动容易度)这一点上的作用都是一样的。
偏置与权重的说明
这里把−θ命名为偏置b,但是请注意,偏置和权重w1、w2的作用是不一样的。具体地说,w1和w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1的程度)的参数。比如,若b为−0.1,则只要输入信号的加权总和超过0.1,神经元就会被激活。但是如果b为−20.0,则输入信号的加权总和必须超过20.0,神经元才会被激活。像这样,偏置的值决定了神经元被激活的容易程度。另外,这里我们将w1和w2称为权重,将b称为偏置,但是根据上下文,有时也会将b、w1、w2这些参数统称为权重。
线性与非线性
感知机的局限性就在于它只能表示由一条直线分割的空间。图2-8这样弯曲的曲线无法用感知机表示。另外,由图2-8这样的曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间。线性、非线性这两个术语在机器学习领域很常见,可以将其想象成图2-6和图2-8所示的直线和曲线。
感知机的局限性
节讲到的感知机的局限性,严格地讲,应该是“单层感知机无法表示异或门”或者“单层感知机无法分离非线性空间”。
实际上,与门、或门是单层感知机,而异或门是2层感知机。叠加了多层的感知机也称为多层感知机(multi-layered perceptron)。
感知机小结
• 感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。• 感知机将权重和偏置设定为参数。• 使用感知机可以表示与门和或门等逻辑电路。• 异或门无法通过单层感知机来表示。• 使用2层感知机可以表示异或门。• 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。• 多层感知机(在理论上)可以表示计算机。
神经网络
阶跃函数与sigmoid函数
如果把这两个函数与水联系起来,则阶跃函数可以比作“竹筒敲石”A,sigmoid函数可以比作“水车”。阶跃函数就像竹筒敲石一样,只做是否传送水(0或1)两个动作,而sigmoid函数就像水车一样,根据流过来的水量相应地调整传送出去的水量。
阶跃函数和sigmoid函数还有其他共同点,就是两者均为非线性函数。sigmoid函数是一条曲线,阶跃函数是一条像阶梯一样的折线,两者都属于非线性的函数。
ReLU函数
1 | def relu(x): |
maximum函数会从输入的数值中选择较大的那个值进行输出。
矩阵的乘积的计算方法
矩阵A和矩阵B的对应维度的元素个数必须保持一致。
就是运算结果的矩阵C的形状是由矩阵A的行数和矩阵B的列数构成的。
A是二维矩阵、B是一维数组时,也要保持对应维度的元素个数一致。
输出层函数
输出层所用的激活函数,要根据求解问题的性质决定。一般地,回归问题可以使用恒等函数,二元分类问题可以使用 sigmoid函数,多元分类问题可以使用 softmax函数。
恒等函数
恒等函数会将输入按原样输出。
softmax函数
在进行softmax的指数函数的运算时,加上(或者减去)某个常数并不会改变运算的结果。可以使用任何值,但是为了防止溢出,一般会使用输入信号中的最大值。
1 | def softmax(a): |
softmax函数的输出是0.0到1.0之间的实数。并且,softmax函数的输出值的总和是1。输出总和为1是softmax函数的一个重要性质。正因为有了这个性质,我们才可以把softmax函数的输出解释为“概率
机器学习的分类
机器学习的问题大致可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的)数值的问题。比如,根据一个人的图像预测这个人的体重的问题就是回归问题(类似“57.4kg”这样的预测)。
学习与推理
求解机器学习问题的步骤可以分为“学习”A 和“推理”两个阶段。首先,在学习阶段进行模型的学习B,然后,在推理阶段,用学到的模型对未知的数据进行推理(分类)。如前所述,推理阶段一般会省略输出层的 softmax函数。在输出层使用 softmax函数是因为它和神经网络的学习有关系