前言
最近正在补神经网络方面的功课,为研究生工作打好基础,特地在此记录一下学习过程
其实本人很早以前就在用yolo做视觉处理了,但由于学艺不精只能掉包及调参,因此重新恶补一次,学习资料参考吴恩达老师的视频
概述
神经网络其实就类似我们大脑的神经细胞一样,正好利用下最近学习的神经科学的例子来说明一下
可以看到上图所示的是两个神经细胞之间的信息通信,最上方的树突用来接收信息,相当于系统的 输入
输入后的信号经过细胞体的处理会将信息通过轴突 输出给下一个神经元,这便是一个最简单的神经网络
理解了上述内容,那么映射到我们所要学习的神经网络就不难了
图中的左边是一些已知的先验条件,例如尺寸、房间、消费水平等,我们利用这些先验条件,将其输入给神经网络,它就会像一个个小细胞一样为我们处理出理想的输出
这样有先验条件的神经网络称之为监督学习,一般用在一些已知规律利用机器帮助分类、推理的场合
与之对应的无监督学习则是不知道输入的数据的具体含义,而是无差别地输入给神经网络,让神经网络自己去找寻我们所不知道的规律,这在杀毒、防拦截领域常常用到
组成
一个典型的网络系统包含了输入、网络、输出、激活函数、损失函数、成本函数
这里简单带过一下,等后面学习深入了再慢慢提及
激活函数
激活函数对输出起作用,用来将输出值成一定的数学关系缩放或变换,不同的激活函数有不同的功能
损失函数
损失函数用于度量单次训练时网络的输出和真实值之间的关系,损失函数越小说明系统的鲁棒性越强
成本函数
成本函数简单来讲就是整体训练的度量值,可以理解为损失函数的平均值,也是越小越好
案例
这里先提一下逻辑回归,因为只看到了这QAQ
这是一个简单的二分类算法,即输出只有0和1,因此联系上文不难想到我们需要用一个能把输出限制在0-1之间的激活函数(sigmod函数)
同时这还是一个线性函数,即其满足 y = kx + b
简单的流程就是:先喂给系统已知的输入(X)和对应的输出(Y),然后通过简单的线性函数关系计算出对应的斜率k和常数项b,得到一条 分界线
当然这种说法十分地不专业,比如是如何得到最佳的斜率和常数项呢?(通过梯度下降的原理,找到最佳的斜率和常数项,还要规定学习率)
又或者损失函数和成本函数在哪些地方派上用场呢(分别用来评估系统的性能以及找到最佳的斜率和常数项)
这些我会随着时间推移在后面一点一点地补充,这篇笔记只是做一个小小的概述