12

一段时间以来,我一直在尝试学习神经网络,并且可以在线了解一些基础教程。现在我想使用神经网络开发在线手写识别。所以我不知道从哪里开始?我需要一个很好的指导。最后我是java程序员。

你建议我怎么做?

4

11 回答 11

15

从Unipen数据库上的字符识别开始。

您需要从原始轨迹数据中提取相关特征,以形成通常所说的“特征向量”。例如,您可以使用插值方案重新采样数据以得到 n 个元组,每个元组包含以下信息:

  • 位置
  • 方向
  • 速度
  • 加速度
  • 曲率
  • ETC

一旦有了固定大小的特征向量,就可以将其用作神经网络的输入。尝试 MLP 网络作为开始。

您必须进行试验才能确定哪些功能最好。

如果您需要开始从 Ink 数据中提取特征,请查看HP 的 Lipi Toolkit(请注意,他们的识别器虽然不使用神经网络)。

您还可以查看实现神经网络的 15 个步骤教程

于 2009-12-28T09:07:56.070 回答
11

Introduction To Neural Networks for Java是一本很好的入门书籍,其中包含一个手写识别示例。

替代文字

于 2009-12-28T09:58:50.447 回答
3

看看网上流传的一些项目:

仅列出 Google 为“ java 手写识别”吐出的前三个链接

一些帮助您入门的提示:

  • 如果可以,请使用矢量而不是位图图形。理想情况下,您应该知道每个笔划的速度和方向。通过曲线弯曲的方式以及绘制它的速度而不是形状来识别字母通常更简单。

  • 用几种方法解决问题。使用神经网络、形状识别、大小、上一个和下一个字母、字典。所有这些都会为您提供具有不同错误级别的不同结果。这可以极大地帮助改善结果。

祝你好运!

于 2009-12-28T08:41:52.363 回答
3

Peter Norvig 的《人工智能:一种现代方法》是一本关于一般人工智能的好书,解释了很多基础知识,还有一节是关于反向传播神经网络的。

要训​​练您的神经网络,您需要数据集。

手写数字的 MNIST 数据库,或UCI 机器学习存储库中的基于笔的手写数字识别数据集

UCI ML 存储库有很多很棒的数据集,其中很多都可以很好地训练神经网络。即使你不知道它们是关于什么的,你也可以拿一些来看看你的 ML 系统是否可以完成分类任务。查看具有大量属性和实例的分类任务,尽管您在开始时也可以尝试较小的任务。

顺便说一句,除了神经网络之外,还有很多技术,包括流行的支持向量机。

于 2009-12-28T11:46:01.810 回答
2

请记住,如果您的目标是真正识别这些字符,那么您的表现将取决于输入特征的质量和选择

选择正确的特征并尽可能多地进行预处理(即去除噪声特征、无关数据、重复或强相关特征)是绝对关键的。以我的经验,你会从具有良好特性的最无聊和最简单的最近邻实现中获得更好的性能,而不是从具有较少选择的特性的尖端算法中获得更好的性能。

对你来说,这意味着暂时推迟阅读神经网络文献(先拿一些现成的黑盒实现)并阅读实际系统使用什么样的图像处理等。如果您的数据可以包含压力和速度信息,那就更好了。像 LDA 热图这样的东西可以说明最初看到哪些特征重要,哪些不重要。

对于基本分类,有很多不错的算法。大多数工作都很好,对你也很好。困难的部分不是挑选或调整算法,而是避免垃圾进垃圾出场景。

于 2010-01-15T14:40:30.087 回答
1

希顿研究会帮助你很多

http://www.heatonresearch.com/articles/7/page3.html - 使用示例代码片段访问此教程

于 2014-02-11T09:42:41.893 回答
0

神经网络 [如果我没记错的话] 将用于解释模式,您向程序提供输入,程序在一组存储的模式中搜索该模式,并根据匹配提供可能的匹配。

在您的情况下,图案的尺寸可以是速度+方向或仅方向等数据

我对一个在我的网站上以类似方式聊天的神经机器人做了一个小型模拟。

程序“学习”的模式越多,它提供的答案就越准确。

于 2009-12-28T09:42:16.747 回答
0

神经网络需要大量的浸泡时间。这些概念很简单,但对初学者来说可能是压倒性的。

看看 Jochen Fröhlich在 Java 中使用神经网络所做的工作。对于像您这样的 Java 程序员来说,这听起来是一个理想的起点。

于 2009-12-28T19:43:17.800 回答
0

书籍:字符识别系统:学生和从业人员指南白板笔记识别:在线、离线和组合是很好的起点。

于 2010-01-13T09:37:22.903 回答
0

如果你正在寻找概念,我建议 BrainNet,

神经网络 - 第 I 部分:.NET 中的简单手写识别系统

http://amazedsaint.blogspot.com/2008/01/neural-networks-part-i-simple.html

BrainNet 将帮助您

  • 获得有关神经元和神经网络的公平理解
  • 获得有关智能系统的良好概念
  • 了解如何使用此神经网络库以在您的项目中使用它。
  • 了解如何开发一些很酷的神经网络程序
于 2010-01-18T16:26:42.293 回答
0

我建议你从手写数字识别开始,原因如下:

  • 任务明确
  • 上面提到了一个非常好的手写数字数据库(MNIST
  • 在这个问题上测试了很多实现的算法
  • 解决这个问题最成功的方法之一是卷积神经网络,它甚至被用于商业应用。可用的实现很少,包括 C++、CUDA、Matlab、Python。不幸的是,我不知道任何 Java 实现。
于 2010-12-22T12:59:42.610 回答