My spelling corrector, which uses a neural network as the underlying algorithm, miscorrects four of the 49,168 words in the dictionary. The thing about this neural net is it is constructed logically rather than from a massive learning set. As an acceptance test, I have it validate that every word in the dictionary corrects to itself. (The “training” of the neural net takes about 100 ms - that is, the time to load the dictionary and make the connections.)
Below are the only errors it makes in my test set of 49,000 words. These words look identical to the neural network. Luckily this is uncommon!
_intended_
_indented_
_unintended_
_unindented_
Benchmarking is fun:
On a Raspberry Pi 3 using just one core, the time to validate the dictionary is 1h 1m 38s. With all four cores running, the time is 17m 26s (not quite a 4x speedup but close).
On an AWS X1.32xlarge instance using just one core, the time to validate is 7m 6s. A single core on the AWS machine beats the Raspberry Pi’s four cores.
With all 128 cores running, the time is 14s. An X1.32xlarge rents for (in late 2018) about $13 / hour.
Raspberry Pi3 single core: 1 hour and a minute. X1.32xlarge at AWS with 128 cores: 14s.