一些基础概念以及基于Pytorch框架下部分代码
自上次项目进度之后,又过了5个月,才有了一点点的新的进展,主要 是因为期间在上课,很少有空腾出来做一些自己事情,今天借着一个大佬的学习视频,在这里将一部分机器学习中的基础概念暂时摆上来,以后忘记时方便查询。主要涉及基础神经网络,后面会将RNN(循环神经网络)的部分图解一并传上,主要涉及LSTM,CRF,BiLSTM的相关原理。
由于所有的文字皆copy自pycharm,所以这里就不做过多格式了
1 隐藏层是什么
隐藏层就是一层一层的黑箱,对输入的特征进行进一步抽象,已达到提取关键信息,并进行处理的目的,我们可以通过延长输入层或输出层以达到,将黑箱(隐藏层)消除的效果(只用来理解,实际上不会这么做)
2 层和维度,神经元都是什么
层和维度应该是一个东西,一般说隐藏层有多少层,就是隐藏层有多少维,而神经元就是一层(维)之中,处理数据时节点的个数,所以一个网络中一共有多少个神经元==层数(维度)*
单层神经元个数
3 什么是特征
特征可以理解为,对一个事务的抽象概念,比如:对一个人的抽象就是——身高,体重,颜值,等等。而这些我们人类可以理解的特征通常作为网络的输入层,输入给隐藏层进行处理,
而隐藏层需要做的就是将这些特征进一步抽象,抽象成人类无法理解的特征(但计算机可以用此来识别物体)
4 激励函数是什么
激励函数说白了就是,对线性函数进行一定的约束,使其成为非线性函数的函数,比如tanh,relu等等,我们通常根据要解决的问题选择不同的激励函数,将隐藏层的输出进行约束处理,然后交给一下层继续处理(下一层可以是另外一个隐藏层,也可以是输出层)
具体激励函数都长什么样子,可以百度上面给出的两个激励函数名字,以获取可视化的图,方便理解
5 forward函数是用来干嘛的
目前未知(只知道是将神经网络正向传递的,可以用来算出损失,然后我们可以通过损失(实际结果与理想结果之际的差)正反馈给模型,一共模型进行优化(调参))
6 如何搭建一个神经网络
利用pytorch的话,主要就是写一个类,然后让这个类继承自torch.nn.Module,然后继承并实现里面的init方法(给模型初始化参数),同时要实现forward方法(即向前传递的方法)
7 什么是张量(tensor)
张量其实就是高纬度的矩阵,二维矩阵一般写成:[[1,2],[3,4]],而张量则可以是3.4.5…….维的矩阵:[[[1,2],[3,4]],[[5,6],[7,8]]](这就是一个三维的张量(2*
2*
2))
8 什么是转移矩阵(状态转移矩阵类似)
转移矩阵以二维矩阵为例子的话,说白了就是一张表,表的行代表现在某个物体的状态,而表的列,则代表这个物体下个时间上的状态(通常是概率,即从当前状态转移到下一个状态的可能性)
举个例子
9 什么是优化器
其内部原理暂不清楚,但其作用是用反向传递回来的张量(即loss.backward穿回来的张量)对模型进行优化(调节参数,以使得到的分数更高,loss更低),类似于人脑的反馈学习
10 什么是embedding
这里引用知乎网友的一个回答,感觉讲的蛮清楚的
embedding解释
下面是我根据学习视频中的教程大致敲出来的一个例子
1 | import torch |
这里将其中的那个网址提出:backward原理
我将在下一个博客中提及有挂CRF,BiLSTM,LSTM的相关概念(图解)
相关链接