Encog手册翻译:介绍

小弟我英语水平很差,四级没过而最近要补考四级,但单纯记单词又记不住还困,然而最近又想学习人工智能,所以就找了个人工智能的外文资料自己试试翻译,有诸多错误的地方,请大神们多多指教哈

Encog是一个JAVA和.Net的机器学习框架,最初,Encog创建时仅仅支持神经网络,后来的版本扩展了更多通用的机器学习,然而,这本书将重点在主要的神经网络方面,在这本书中学到的大多数技术能够应用到其他的机器学习技术领域,随后,这本书将重点在一些Encog编程的一些领域。

这本书的出版结合了Encog3.0的正式版和应该坚持兼容之后的encog3版本,未来的版本3.x系列将试图以最小程度破坏存在的代码添加一些功能。

0.1 Encog的历史

Encog的第一个版本0.5,正式发布在2008年7月10号,Encog最初的基础包括一些代码用于编写第一个版本的<<介绍神经网络与Java>>,于2005年发布,第二个版本的特色是完全地重新设计了神经网络引擎,成为Encog 0.5版,Encog版本1.0到2.0极大地扩展了神经网络代码远远超出了本书所能介绍的,Encog3.0版本增加了更多正式地支持机器学习方法不仅仅只有神经网络。

这本书将提供一个怎样用Encog去使用神经网络综合性的介绍,对于实际实现神经网络的复杂性,参考 <<介绍神经网络与Java>> 和 <<介绍神经网络与.Net>>,本书探索怎样实现基本的神经网络和创建一个神经网络的内部。

这两本书可以顺序阅读,因为新概念的引入很少重复,这两本书不是彼此的先决条件,这本书将装备你开始和Encog, 如果你能基本了解JAVA编程语言的基础,尤其,你应该熟悉以下:

•JAVA泛型

• 集合

• 面向对象程序设计

在我们开始测试怎样使用Encog之前,让我们首先来确定Encog擅长解决哪些问题,神经网络是一个编程技术,它们不是每一个编程问题解决的新技术,然而却经常有能力地解决某些编程问题,当然,在这里还有其他的问题,对于神经网络不是很适合

0.2介绍神经网络

这本书将定义一个神经网络并且怎样去使用它,大多数人,即使非程序员,都听说过神经网络。有很多的科幻小说弦外之音和神经网络有关联,和许多事情一样,科幻小说作家创作了大量的,但是有点错误的关于神经网络是什么的公共概念。

多数的外行人员认为神经网络作为一种“人造大脑”是强大的机器人或者与人类进行智能对话,这个概念的定义更接近人工智能(AI)而不是神经网络,AI寻求创造出真实的智能机器,我不会去浪费几章去解释什么是真真的人类智能,而不是当前的计算机状态,当前的计算机不是一个智能的。

神经网络是AI的一小部分,神经网络,至少它们当前存在,执行非常小,指定的任务,基于计算机的神经网络不是像人脑那样的通用计算设备,神经网络的感知可能是偏斜的,因为大脑本身是一个神经元或者是一个神经网络,这个就产生了一个重要的区别。

人脑更准确的描述为一个生物神经网络(BNN),这本书不是关于生物神经网络的,大多数的文本在这两者间不做区分,在本书中,引用的神经网络意味着人造神经网络。

在生物神经网络和人造神经网络之间有一些基本的相似性,人造神经网络主要的数学结构的灵感来自生物神经网络,一个重要的术语“生物合理性”经常用来描述各种人造神经网络算法,这个术语定义了人造神经网络算法怎样接近于生物神经网络。

如前所述,神经网络设计来完成一个小的任务,一个完整的应用程序可能使用神经网络来完成目标的某些部分,整个应用程序不能作为一个神经网络实现,应用程序也许由几个神经网络组成,每个都为一个特定的任务而设计。

神经网络完成模式识别任务非常好,当一个模式传达的时候,一个神经网络返回模式,在这个最高级别,这是所有典型的神经网络所做的,一些网络构造将会变化,但是绝大多数的神经网络是这种方式工作的,图一阐述了这个级别的一个神经网络



正如你所看见的,上面的这个神经网络接受一个模式和返回一个模式,神经网络完全同步执行,一个神经网络仅仅当提供了一个输入时才将输出,它不像人脑不同步执行,人脑对输入作出反应,但是它将在任何适合时候产生输出。

0.2.1神经网络结构

神经网络是由相似的神经元组成,至少,大部分神经网络由输入层和输出层组成,输入模式指定到输入层,然后输出模式从输出层返回,在输入层和输出层之间发生的是一个黑盒子,在书中的这一点上,神经网络的内部结构不用考虑的,有大量的结构定义了输入层和输出层之间的相互作用,在本书的后面,这些结构进行了检测。

输入和输出模式都是两个float型数组,以下是一个示例:



上面的神经网络是三个神经元的输入层和两个神经元的输出层,输入层和输出层的神经元数量不能改变,因此,对于一个特定的神经网络,它的输入层和输出层的元素个数永远不会改变。

使用神经网络,问题的输入必须表示为一个float类型的数组,同样地,问题的解决也必须是一个float类型的数组,这是必要的并且是神经网络唯一的真实值,神经网络拿到一个数组,并且将其转换为第二个,神经网络不循环、调用子程序或者执行任何其他相关的传统程序任务,神经网络识别模式。

一个神经网络很像传统编程里的哈希表,一个哈希表用于将key 映射到 value, 有点像一个字典,下面可以看做是一个哈希表的例子:



这是一个单词和每个单词的定义之间的映射, 就像一个哈希表在任何编程语言里一样,它使用一个字符串的key 到任意的一个字符串的value, 输入是字典里的一个key和输出是一个value, 这是大多数神经网络的功能,一个神经网络调用一个BidirectionalAssociative Memory (BAM)实际上允许用户通过value和接受key。

哈希表使用key和value, 想想模式发送到神经网络的输入层就像哈希表的Key, 同样地,模式从神经网络的输出层返回就像从哈希表返回value,这个哈希表和神经网络之间的比较,然而,神经网络要比哈希表工作要好得多。

如果一个单词不在哈希表中那上面的哈希表会发生什么?例如,传递一个key ‘wrote’,那哈希表将返回null或者在某种程度上表明它无法找到指定的Key, 神经网络不会返回null, 而是找到一个最接近的匹配,它不仅找到最接近的匹配,神经网络还修改输出值来估计缺失值,如果传递一个”wrote”到上面的神经网络,输出可能是’write’, 在这里没有足够的数据为神经网络去修改返回,这里仅仅三个样例,所以你可能从其他的key中得到输出。

上面的映射提出了一个非常重要的点关于神经网络,回想神经网络接受一个float类型的数组和返回另外一个数组,如何将字符串放到神经网络如上图所示?虽然有方法可以做到这一点,它处理数值型数据比处理字符型数据更容易。

一个神经网络的问题,输入必须是float型数组,这是神经网络编程最困难的一个方面,怎样让一个问题转换为一个固定长度的float型数组?最好的方式是通过演示,在本书的例子中都有介绍和探索。

0.2.2一个简单的例子

大多数基础的有关神经网络提供的例子是XOR运算符,这个XOR运算符是神经网络编程里的hello world, 虽然这本书将描述场景比XOR复杂很多,但这XOR运算符是一个伟大的介绍。

开始,如下的XOR运算符虽然他是一个哈希表,XOR运算符工作类似于AND和OR运算符,对于AND运算符结果要为true, 输入两个都要为ture, 对于OR运算符结果要为ture, 只要输入的其中一个为true, 对于XOR结果要为true, 必须输入的两个彼此不相同,XOR真值表如下:

False XOR False = false;

True XOR False = True;

False XOR True = True;

True XOR True = False;

继续哈希表的例子,上面的真值表可以表示如下:

[0.0, 0.0] -> [0.0]

[1.0, 0.0] -> [1.0]

[0.0, 1.0] -> [1.0]

[1.0, 1.0] -> [0.0]

这些映射显示了神经网络的输入和理想期望的输出

0.3什么时候使用神经网络

定义了神经网络之后,或者当不使用时必须确定他们,知道何时不使用的东西是一样重要的知道如何使用它 ,要了解这些目标,我们将确定Encog擅长解决什么样的问题。

这本书一个重要的目标是解释怎样构造Encog神经网络和何时使用他们,神经网络程序员必须明白哪些问题是适合神经网络解决的和哪些是不适合的,一个神经网络程序员也知道神经网络的有效结构,是适合用于给定的一个问题,这节将首先确定不适合神经网络方案解决的问题。

0.3.1不适合神经网络方案解决的问题

程序很容易写成流程图的问题不是一个理想的神经网络应用程序,如果你的程序考虑能够很好的定义明确的步骤,那正常的编程技术就已经足够了。

另外一个考虑的标准是程序逻辑是否可能会改变,神经网络的主要特征是学习能力,如果你的算法用来解决的问题是一个不变的业务规则,在这里就没有理由使用神经网络,事实上,神经网络可能会对你的应用程序,如果它试图找到一个更好的解决方案,开始偏离预期的过程,可能会发生意想不到的结果。

最后,神经网络通常是不适合需要明确可追踪路径解决方案的问题,神经网络可以非常有用解决训练的问题,但不能解释其推理,神经网络知道一些东西,因为它被训练去了解它,然而,神经网络无法解释随后得出答案的一系列步骤。

0.3.2适合神经网络方案解决的问题

虽然神经网络有很多问题不太适合,但也有很多问题,神经网络解决方案非常有用,此外,神经网络通常可以解决问题比传统编程算法用更少的代码,重要的是要明白哪些问题能够使用神经网络方法。

神经网络对于解决那些不能用一系列步骤表示的问题特别有用,这可能包括了模式识别,分类,预测和数据挖掘。

模式识别可能是神经网络最常用的方法,对于这种类型的问题,神经网络已图像,声音或其他数据形式呈现,然后,神经网络试图确定输入数据是否与训练过的模式相匹配。本书的其余部分将研究许多例子如何使用神经网络来识别模式。

分类的过程接近模式识别,一个神经网络训练分类是为了将输入样本分组,这些组也许是模糊的,缺乏明确定义边界的,另外,这些组也许有着相当严格的边界。

0.4 本书的结构

本书开始的第一章, “回归,分类&聚类”.这章介绍了用神经网络执行的主要任务,这些任务不仅仅通过神经网络来完成,也有另外的其他机器学习算法。

神经网络的主要任务之一是识别和提供对数据的洞察,第二章,“获取数据&标准化”,说明怎样在使用神经网络之前处理这些数据,这章将研究一些可能用于神经网络的数据,以及如何使用神经网络规范化和使用这些数据。

Encog包括了一个Encog Workbench的GUI神经网络编辑器,第三章,“使用Encog Workbench”,详细说明此应用程序的最佳方法和用途,Encog Workbench提供了一个能够编辑Encog框架使用的.EG数据文件的一个GUI工具,强大的Encog分析师也能够用来自动执行大量的任务。

接下来就是构造和保存神经网络,第四章,“用JAVA构造神经网络”,说明了使用layer和激活函数怎样创建神经网络,它也将阐述怎样使用平台独立的.EG文件或者标准JAVA序列化这两种方式去保存神经网络。

神经网络必须通过有效的利用训练和这儿有几种方式去执行这个训练,第五章,“传播训练”,说明了怎样使用内置的Encog训练神经网络的传播方法,Encog支持反向传播,弹性传播,曼哈顿更新规则,快速传播和SCG。

第六章,“其他监督训练方法”,说明了Encog支持的其他监督训练算法,这章介绍了模拟退火算法和遗传算法作为Encog神经网络训练技术,第六章也详细说明怎样创建混合训练算法。

Encog不仅仅支持前馈神经网络类型,第七章,“其他神经网络类型”,提供了简要介绍其他几个Encog支持的神经网络类型,第七章描述怎样设置NEAT, ART1和Elman/Jordan神经网络。

神经网络通常使用来预测未来数据的改变,一个常见的用途是预测股市趋势,第八章,“使用时序数据”,将说明怎样使用Encog预测趋势。

图像是最常见的作为神经网络输入使用,Encog包含了易于使用的图像数据和训练神经网络的类,第九章,“使用图像数据”,说明了怎样通过Encog使用图像数据。

最后,第10章,“使用自组织映射”,讲解了Encog通过监督训练到使用无监督训练的扩展,一个自组织映射(SOM)可以用于集群数据。

当你阅读这本书虽然你对Encog框架无疑会有问题,你最好的资源是Heaton Research的论坛,可以在以下URL找到:

www.heatonresearch.com/forum

另外,Encog Wiki, 位于以下的URL

www.heatonresearch.com/wiki/Main_P…


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值