11.07.2015 Views

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

nonprocedural languages 337tions), each <strong>of</strong> which are presented with weighted inputs(called vectors) from which it calculates an output value<strong>of</strong> either true (1) or false (0). The designer <strong>of</strong> the systemknows what the correct output should be. If a given element(or node) produces the correct output, no changes aremade. If it produces the wrong output, however, the weightsgiven for each input are changed by some increment, plusa further adjustment or “bias” factor. This adjustment isrepeated for all units as necessary until the output is correct.In other words, each neuron is constantly adaptingthe way it evaluates its inputs <strong>and</strong> thus its output, <strong>and</strong> thatoutput is in turn being fed into the evaluation process <strong>of</strong>the neighboring neurons. (In practice, a neural network canhave several layers <strong>of</strong> processing units, with one layer providinginputs to the next.)For example, suppose a neural network is being trainedto recognize objects based on the light being received froman array <strong>of</strong> sensors. The sensor readings are interpreted bya number <strong>of</strong> “neurons,” which should output 1 if part <strong>of</strong> thedesired object exists at the location scanned by its sensor.At first there will be many false readings—points at whichpart <strong>of</strong> the object is not recognized, or is falsely recognized.However, after many cycles <strong>of</strong> adjustment this “supervisedlearning” process results in a neural network that has ahigh probability <strong>of</strong> being able to identify all objects <strong>of</strong> agiven general form. What is significant here is that a generalizedability has been achieved, <strong>and</strong> it has emerged withoutany specific programming being required!In a computer neural network the “neurons” or nodes are “trained”to detect a pattern by being reinforced when they successfully registerit.Neural networks have been making their way into commercialapplications. They can be used to help robots recognizethe key components <strong>of</strong> their environment (see robotics<strong>and</strong> computer vision), for interpreting spoken language(see speech recognition <strong>and</strong> synthesis), <strong>and</strong> for problemsin classification <strong>and</strong> statistical analysis (see data mining).In general, the neural network approach is most useful forapplications where there is no clear algorithmic approachpossible—in other words, applications that deal with the<strong>of</strong>ten “fuzzy” realities <strong>of</strong> daily life (see fuzzy logic).Further ReadingBishop, Christopher M. Neural Networks for Pattern Recognition.New York: Oxford University Press, 1995.Haykin, Simon. Neural Networks: A Comprehensive Foundation. 2nded. Upper Saddle River, N.J.: Prentice Hall, 1998.McNellis, Paul D. Neural Networks in Finance: Gaining PredictiveEdge in the Market. Burlington, Mass.: Elsevier AcademicPress, 2005.“Neural Networks & Connectionist Systems.” Association for theAdvancement <strong>of</strong> Artificial Intelligence. Available online. URL:http://www.aaai.org/AITopics/html/neural.html. AccessedAugust 16, 2007.nonprocedural languagesMost computer languages are designed to facilitate theprogrammer declaring suitable variables <strong>and</strong> other datastructures, then encoding one or more procedures formanipulating the data to achieve the desired result (seedata types <strong>and</strong> procedures <strong>and</strong> functions). A furtherrefinement is to join data <strong>and</strong> data manipulation proceduresinto objects (see object-oriented programming).However, since the earliest days <strong>of</strong> computing, programmers<strong>and</strong> language designers have tried to create higherlevel,more abstract ways to specify what a program shoulddo. Such higher-level specifications are, after all, easier forpeople to underst<strong>and</strong>. And if the computer can do the job<strong>of</strong> translating a high-level specification such as “Find allthe customers who haven’t bought anything in 30 days <strong>and</strong>send them this e-mail message” into the appropriate proceduralsteps, people will be able to spend less time coding<strong>and</strong> debugging the program.It is actually best to think <strong>of</strong> a continuum that has atone end highly detailed procedures (see assembler) <strong>and</strong> atthe other end an English-like syntax like that given above.Already in an early language like FORTRAN the emphasisis moving away from the details <strong>of</strong> how you multiply numbers<strong>and</strong> store the result to simply specifying the operationmuch like the way a mathematician would write it on ablackboard. such as T = I + M. COBOL can render suchspecifications even more readable, albeit verbose: ADD I TOM GIVING T, for example. However, these languages arestill essentially procedural.Some languages are less procedural in that they hidemost <strong>of</strong> the details (or subprocedures) involved in carryingout the desired operation. For example, in modern databaselanguages such as SQL what would be a procedure (or a set<strong>of</strong> procedures) in some languages is treated as a query at ahigh level (see SQL). For example:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!