功能语言是否优于建立神经网络的命令?

时间:2012-10-03 03:07:42

标签: functional-programming neural-network

神经网络通常以大量数据为特征,并且需要使用并行计算。它是否使函数式语言更适合构建神经网络?

1 个答案:

答案 0 :(得分:3)

不是真的。如果你坚持不变性(或更准确地避免任何类型的不受控制的副作用),函数式语言通常会使并行化变得微不足道。如果不这样做,那么在非函数语言中使事物并行并不容易。 在这种情况下,您有两个选择:

  • 使用副作用,但是以局部方式,因此并行线程彼此没有业务关系:例如你评估了很多NN-s,它们中的每一个都可以发生在它自己的线程上(使用一个线程池,线程数量不超过CPU内核数量是一个好主意)。

  • 对于非本地化的副作用,您需要依赖同步或其他一些方法来控制它。一个这样的例子是演员的计算模型(在功能语言用户中非常流行,但也可用于java,请参阅http://akka.io/),这通常会让你在演员中产生副作用,但演员的互动有其条规严格。这将使您免于低级线程处理的业务。

你应该考虑的另一件事是,拥有一个中等性能的NN实现并不困难,拥有一个纯粹的功能也不是很复杂,但同时做这两个可能是一项具有挑战性的任务。所以 - 除非你对函数式语言有经验 - 我认为用非函数式语言编写并行化的NN更容易,或者至少以非纯粹的方式编写。