You are here
Machine Learning is the use of algorithms that can automatically learn without being explicitly programmed. They are often used with Big Data, which are applications that contain vast amounts of data, to construct models of that data and subsequently make predictions or decisions about it. They can also be used to automatically write programs; users simply provide a set of test cases, i.e. a set of inputs and corresponding outputs that the program should correctly process,, along with a description of the language available, and Machine Learning can be used to automatically generate a program that maps the inputs onto the outputs.
Machine Learning excels not only with Big Data, but also with noisy data, that is, data that may contain inconsistencies or missing items. Once built, the models it produces can be used to make predictions about new, previously unseen data, or to highlight patterns in the data they were trained with.
Lero is involved in automatic program generation, specifically, using a Machine Learning tool called Grammatical Evolution (GE) to automatically write parallel programs that exploit modern multi-core processors.
Multi-core processors contain several (typical machines contain anything from four to sixteen, but processors exist than contain hundreds) processing cores. Programs that are parallelised, that is, run on all cores simultaneously, can often run much more quickly than serial programs.
However, writing parallel code is a daunting task, as it requires programmers to think in a very different way – instead of focusing on how to write code to solve a problem, they must now also figure out how to do it with as much parallelism as possible, but not too much! Code must not only be parallel, but it must also be as efficient as possible, meaning that the parts that are running in parallel should have as little communication between them as possible, because communication between the different cores slows the program. Finding the right balance between communication and parallelism is a very difficult task for even the most skilled programmers.
Lero researchers have built a system that can automatically write this sort of code. Results have shown it able to produce code that is almost 25% more efficient than code produced by human experts in the field. The Lero system achieved this, ironically, by extracting less parallelism than human programmers, but, in doing so, produced programs that ran substantially faster than the human produced ones, because they had less communication between the cores.
These results were award a Silver Medal at the 2015 “Humies”, a prize awarded annually to researchers who used and automatic programming system to produce code that is more efficient than that produced by a human expert in the field.
- Ryan, C. A rebuttal to Whigham, Dick and Maclaurin by one of the inventors of Grammatical Evolution. Genetic Programming and Evolvable Machines. March 2017.
- Lane, F., Azad, A. and Ryan, C. Principled Evolutionary Algorithm Design and the Kernel Trick. In Friedrich, T., Neumann F. and Sutton, A, editors, Genetic and Evolutionary Computation Conference (GECCO) 2016, pages 149-150. Denver, CO. USA, July 20-24, 2016, ACM.
- Medernach D., Fitzgerald, J., Azad, A. and Ryan, C. A New Wave: A Dynamic Approach to Genetic Programming. In Friedrich, T., Neumann F. and Sutton, A, editors, Genetic and Evolutionary Computation Conference (GECCO) 2016, pages 757-764. Denver, CO. USA, July 20-24, 2016, ACM.
- Gandomi, A., Alavi, A., and Ryan, C. Handbook of Genetic Programming Applications. Springer, 2015
- J. V. Patten and C. Ryan. Attributed grammatical evolution using shared memory spaces and dynamically typed semantic function specification. In P. Machado, M. I. Heywood, J. McDermott, M. Castelli, P. Garcia-Sanchez, P. Burelli, S. Risi, and K. Sim, editors, 18th European Conference on Genetic Programming, volume 9025 of LNCS, pages 105–112, Copenhagen, 8-10 Apr. 2015. Springer.
Meet The Expert - Dr. Conor Ryan