好吧,所以似乎这里的问题似乎更像是“我如何使用神经网络”我可以概述这里的基本程序,试图在你的脑海中巩固这个想法,但就实际实现它而言,靠你自己 . 我个人认为专有语言(MATLAB)是令人厌恶的,但我总是欣赏智力热情 .
神经网络的基本概念是,你有一系列节点,每个节点都有连接它们的权重(根据你想要做的事情,你可以将每个节点连接到上面和下面的层,或连接每个节点,或者在任何地方 . ) . 每个节点都有一个“工作函数”或概率函数,表示给定节点或神经元将评估为“on”或1的机会 .
一般工作流程从您获得的任何顶层神经元/节点开始,将它们初始化为您的数据值(在您的情况下,您可能会将这些中的每一个作为图像中的像素值启动,标准化为二进制将最简单) . 然后将每个节点乘以一个权重并向下馈送到第二层,这将被视为“隐藏层”,具体取决于总和(几何或算术总和,取决于您的实现),它将与工作函数,用于确定隐藏图层的状态 .
最后一点是理论上有点难以理解,所以这是一个例子 . 想象一下,你的第一行有三个节点 ([1,0,1]) ,并且将这三个节点连接到第二层中第一个节点的权重类似于 ([0.5, 2.0, 0.6]) . 如果你正在进行算术求和,这意味着"hidden layer"中第一个节点的权重将是
1*0.5 + 0*2.0 + 1*0.6 = 1.1
如果你使用逻辑函数作为你的工作函数(一个非常常见的选择,虽然tanh也很常见),这将使该节点评估为1的概率大约为75% .
您可能希望最后一层有26个节点,每个字母对应一个节点,但您可以添加更多隐藏层以改进模型 . 您可以假设模型预测的字母将是具有最大权重 Headers 的最终节点 .
在你完成并运行后,你想训练它,因为你可能只是随机播种你的重量,这是有道理的 . 有很多不同的方法,但我通常会概述反向传播,这是一种非常常见的训练神经网络的方法 . 这个想法基本上是,因为你知道应该识别图像的哪个角色,你可以将结果与模型实际预测的结果进行比较 . 如果你的模型准确地预测了你没有的角色,你就可以保留模型,因为它有效 . 如果你预测一个不正确的字符,你想要通过神经网络返回并增加从你输入的像素节点到结束节点的权重,该结束节点应该是预测的字符 . 您还应该减少导致其错误返回的字符的权重 .
希望有所帮助,如果您有任何疑问,请告诉我 .