<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Win-Vector Blog &#187; History</title>
	<atom:link href="http://www.win-vector.com/blog/category/history/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.win-vector.com/blog</link>
	<description>The Applied Theorist&#039;s Point of View</description>
	<lastBuildDate>Sat, 04 Feb 2012 17:42:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>A Personal Perspective on Machine Learning</title>
		<link>http://www.win-vector.com/blog/2010/10/a-personal-perspective-on-machine-learning/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-personal-perspective-on-machine-learning</link>
		<comments>http://www.win-vector.com/blog/2010/10/a-personal-perspective-on-machine-learning/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 21:45:48 +0000</pubDate>
		<dc:creator>John Mount</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Expository Writing]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Machine Learning]]></category>

		<guid isPermaLink="false">http://www.win-vector.com/blog/?p=1551</guid>
		<description><![CDATA[Having a bit of history as both a user of machine learning and a researcher in the field I feel I have developed a useful perspective on the various trends, flavors and nuances in machine learning and artificial intelligence. I thought I would take a moment to outline a bit of it here and demonstrate [...]
Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2009/08/a-demonstration-of-data-mining/' rel='bookmark' title='A Demonstration of Data Mining'>A Demonstration of Data Mining</a></li>
<li><a href='http://www.win-vector.com/blog/2011/10/kernel-methods-and-support-vector-machines-de-mystified/' rel='bookmark' title='Kernel Methods and Support Vector Machines de-Mystified'>Kernel Methods and Support Vector Machines de-Mystified</a></li>
<li><a href='http://www.win-vector.com/blog/2011/07/book-review-ensemble-methods-in-data-mining-seni-elder/' rel='bookmark' title='Book Review: Ensemble Methods in Data Mining (Seni &amp; Elder)'>Book Review: Ensemble Methods in Data Mining (Seni &#038; Elder)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Having a bit of history as both a user of machine learning and a researcher in the field I feel I have developed a useful perspective on the various trends, flavors and nuances in machine learning and artificial intelligence.  I thought I would take a moment to outline a bit of it here and demonstrate how what we call artificial intelligence is becoming more statistical in nature.<span id="more-1551"></span><br />
In the early days <a target="_blank" href="http://en.wikipedia.org/wiki/Machine_learning">machine learning</a> and artificial intelligence were famous for promising far too much and delivering far too little.  This has changed.  Artificial decision and reasoning systems are now everywhere.  One of the things masking the breadth and authority of artificial intelligence is the current prejudice: &#8220;if a system is well understood or works then it is no longer called artificial intelligence.&#8221;  A working system becomes a database, expert system, rules engine, machine learning platform, analytics dashboard, pattern recognition system or statistics warehouse.  We clearly have not reached anywhere near building a conversational intelligence (like Hal from 2001 or <a target="_blank" href="http://mzlabs.com/MZLabsJM/page6/Gerty/Gerty.html">Gerty</a> from Moon).  Yet every day machines decide if your credit card is accepted, advise on medical care, route goods, curate information and control vast industrial plants.</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/10/Hal-9000.jpg" alt="Hal-9000.jpg" border="0" width="150" height="150" /><br />
<br/>Hal 9000<br />
</center></p>
<p>There have been vast improvements in artificial intelligence.  Much of the improvement has been driven by the engineering effects of Moore&#8217;s Law (resulting in my mobile phone&#8217;s processor having 12 times the clock speed and over 32 times the memory of an $8 million <a target="_blank" href="http://en.wikipedia.org/wiki/Cray-1">Cray 1 super computer</a>)  and significant machine learning research results.  These machine size changes happened during the productive careers of many researchers, so ideas are often evaluated at a series of radically different machine capabilities and data scales.</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/10/Cray-1-deutsches-museum.jpg" alt="Cray-1-deutsches-museum.jpg" border="0" width="487" height="536" /><br />
<br/>Cray 1<br />
</center></p>
<p>von Neuman himself commented that scale was a major limiting factor in early computers.  He asked the question how you could be expected to achieve anything significant even from a roomful of geniuses if (as with his early computers) all notes, communication and memory were limited to less than a single typed page.  von Neuman&#8217;s comment stands in contrast to science fiction scientists and early boosters of artificial intelligence who always seem to be in awe of their own creations.  Computers are certainly much larger- but we need to be humble and put off deciding if we are yet in the era of large computers (compared to human or animal brains).  Everything we are doing now may still just be artificial intelligence&#8217;s pre-history and prologue.  Feynman in his lectures on computation mentions that RNA transcription can be estimated to take around 100 kT of energy to transcribe a bit while a transistor may easily use 100,000,000 kT energy units to switch states.  This means for the amount of heat the human head dissipates (energy supply and heat dissipation are rapidly becoming the most relevant measures of computational power) you could do a million times more work using RNA techniques (if you knew how) than with transistors.  So computers may not yet be what we should call large (though they are likely getting there).  What we currently call <a target="_blank" href="http://www.win-vector.com/blog/2009/08/on-the-hysteria-over-the-cloud/">&#8220;datacenters&#8221;</a> are in fact block sized computers (consuming an enormous amount of energy and dissipating a huge amount of heat).</p>
<p><center><br />
<img  target="_blank" src="http://www.win-vector.com/blog/wp-content/uploads/2009/08/google_data_center_lenoir.jpg" alt="google_data_center_lenoir.jpg" border="0" width="512" height="355" /><br />
<br/>A datacenter (or a block sized computer)<br />
</center></p>
<p>Not all improvements in machine intelligence have come from (or are to come from) improvements in hardware.  Many of the improvements came from machine learning research results and these are what I will outline below.</p>
<p>Early machine learning algorithms were driven by analogy.  This led us to perceptrons (1957, fairly early in the history of computer science) and neural nets.  These methods have their successes but were largely over used and developed before researchers developed a good list of desirable properties of a machine learning method.</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/10/220px-Neural_network_example.svg_.png" alt="220px-Neural_network_example.svg.png" border="0" width="220" height="293" /><br />
<br/>Neural Net diagram<br />
</center></p>
<p>These methods live on but are,  in my opinion, not currently competitive.  Some of their important ideas and contributions have been revived from time to time, such as the online update rules becoming what we now call stochastic gradients.</p>
<p>A list of (often incompatible) desirable properties of a machine learning algorithm is the following:</p>
<ul>
<li>Able to represent complicated functions</li>
<li>Good generalization performance (quality predictions on data not seen during training)</li>
<li>Unique optimal model for a given set of data and feature definitions</li>
<li>Efficient and well characterized solution method</li>
<li>Consistent summary statistics</li>
<li>Preference for simple models</li>
</ul>
<p>We divert from this list for a bit of background and context.</p>
<p>The neural net was largely celebrated for its ability to represent complex functions and the perceived efficiency of its newer back-propagation based training method (related to the <a target="_blank" href="http://www.win-vector.com/blog/2010/07/gradients-via-reverse-accumulation/">efficient calculation of gradients</a>).  The downsides were you never knew if your neural net was the right one (even assuming you had the right features, layout and training data) and could not be sure you were biasing towards simple models that might perform well on novel queries.  Great effort was expended in extending neural nets based on the supposition they should work as they were an analogy to how we imagined biological neurons might function.  An almost mystic hope was derived from the non-linear nature and special properties of the sigmoid curve (which was in fact a curve already known to statisticians).</p>
<p>Other methods than neural nets also had early success.  The field of information retrieval (which was not &#8220;sexy&#8221; prior to the Web) had huge success since the 1960s with <a taret="_blank" href="http://en.wikipedia.org/wiki/Naive_Bayes_classifier">Naive Bayes</a>, <a target="_blank" href="http://en.wikipedia.org/wiki/Rocchio_Classification">Rocchio Classification</a>, and <a target="_blank" href="http://en.wikipedia.org/wiki/Tf–idf">TF/IDF</a> methods.  The early success of these methods may have in fact delayed research on current hot research areas such as segmentation and author topic models.</p>
<p>Theoretical computer science initially sought to characterize machine learning methods in non-statistical language.  In the 1980s a great amount of ink was spilled on &#8220;learning boolean functions.&#8221;  Papers proving nothing was learnable (by picking a function related to cryptography) alternated with papers proving everything was learnable (for example via amplification techniques like boosting).  Generalization of models to new data remained a theoretical problem that was dealt with by appeals to model complexity and <a target="_blank" href="http://en.wikipedia.org/wiki/Minimum_description_length">MDL</a> (minimum description length).  A major breakthrough in characterizing generalization performance was the <a target="_blank" href="http://en.wikipedia.org/wiki/Probably_approximately_correct_learning">PAC model</a> (probably approximately correct) framework which finally allowed direct treatment of generalization performance.</p>
<p>We now have enough context  to discuss some of the current best of breed machine learning techniques (that address many of the desired properties mentioned above):</p>
<ul>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Support_vector_machine">Support Vector Machines</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Kernel_methods">Kernel Methods</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Logistic_regression">Logistic Regression</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Principle_of_maximum_entropy">Maximum Entropy Methods</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Regularization_(mathematics)">Regularization</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Graphical_model">Graphical Models</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Conditional_random_field">Conditional Random Fields</a></li>
<p> </ul>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/10/556px-Svm_max_sep_hyperplane_with_margin.png" alt="556px-Svm_max_sep_hyperplane_with_margin.png" border="0" width="278" /><br />
<br/><br />
Typical SVM maximum margin diagram<br />
</center></p>
<p>Not all of these methods are new (Logistic Regression for example dates from 1925 and is itself based on regression which goes back to Gauss).  But the concerns these methods address are all much more statistical than artificial intelligence in nature.  For example we don&#8217;t  suppose that there is some cryptographically obscured combination of features that we need to find to make the best prediction.  We instead worry about detecting which features are useful and note that it is a significant (though solvable) problem to correctly use combinations of useful features (phrased as statistical concerns: feature to feature dependencies and higher order interactions).  Machine learning has always run where statisticians fear to tread.   But more and  more often we are seeing that the methods and concerns of statisticians are what are needed to achieve many of the listed desired properties of machine learning models.</p>
<p>The methods I have singled out for praise are very effective and achieve a number of our listed desired properties.  For example:  both logistic regression and maximum entropy have a unique solution that is easy to find.  They are also both consistent with all summaries known during training.  That is: if 30% of the positive training data has a feature present then 30% of the data also has the feature present when weighted by the model&#8217;s score (so the model score shares a lot of properties with training truth).  Support Vector Machines also have well understood solutions and a theory (called maximum margin) that directly addresses generalization (good predictions on new data).  Kernel Methods (both as used in SVMs and elsewhere) allow controlled introduction of very complex functions.  Graphical Models and Conditional Random Fields also allow the controlled introduction of modeled dependencies in the data.</p>
<p>It is now common to call what was previously thought of as artificial intelligence or machine learning: &#8220;statistical machine learning.&#8221;  This reflects that the kind of prediction and characterization we expect from machine learning algorithms are in fact statistical concerns that we can deal with if we have enough data and enough computational resources. </p>
<p>The current important issues for statistical machine learning include:</p>
<ul>
<li>Dealing with very large datasets (driving the return of simpler methods like Naive Bayes)</li>
<li>Dealing with lack of training data (driving interest in clustering and manifold regularization methods)</li>
<li>Dealing with unstructured data and text mining (driving interest in information extraction and segmentation via generative models)</li>
</ul>
<p>Just as Wigner famously wrote about &#8220;The Unreasonable Effectiveness of Mathematics&#8221; in the 1960s  Halevy,Norvig and Pereira write about the &#8220;Unreasonable Effectiveness of Data.&#8221;   They argue that we are in the age of big data (or the age of analysts).   Or, as Varian observed: &#8220;it is a good time to supply a good complementary to data&#8221; (i.e. it is a good time to be an analyst).  I would temper this with we are likely in the age of unmarked data and unstructured data.  Less often are we asked to automate a known prediction and more often we are asked to cluster, characterize and segment wild data. In my opinion the hard problem in machine learning has moved from prediction to characterization.  With enough marked training data (that is data for which we know both the observables and desired outcome) it is now quite possible to use standard techniques and libraries to build a very good predictive model.  However, it is still hard to characterize, segment or extract useful information from the wealth of unstructured and unmarked data that is upon us.  And this is where a lot of the current research in statistical machine learning is directed.  </p>
<p>Or course characterization and clustering have their own infamous history.  Rota wrote: &#8220;&#8230; Or a subject is important, but nobody understands what is going on; such is the case with quantum field theory, the distribution of primes, pattern recognition and cluster analysis.&#8221;  Artificial intelligence may be moving from areas where computer scientists have over-promised to areas where statisticians have over-promised.  But this is not a disaster: the most valuable research tends to be done in hectic times in messy fields, not in calm times in neat fields.  And the already large scale adoption of statistical machine learning techniques means there is immediate great client value in even seemingly small improvements in understanding, explanation, documentation, training, tools, libraries and techniques.</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/10/Xbarst1.jpg" alt="Xbarst1.jpg" border="0" width="384" height="398" /><br />
<br/><br />
Classic attempt to add structure to text<br />
</center></p>
<p>(images from Wikipedia)</p>
<p>Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2009/08/a-demonstration-of-data-mining/' rel='bookmark' title='A Demonstration of Data Mining'>A Demonstration of Data Mining</a></li>
<li><a href='http://www.win-vector.com/blog/2011/10/kernel-methods-and-support-vector-machines-de-mystified/' rel='bookmark' title='Kernel Methods and Support Vector Machines de-Mystified'>Kernel Methods and Support Vector Machines de-Mystified</a></li>
<li><a href='http://www.win-vector.com/blog/2011/07/book-review-ensemble-methods-in-data-mining-seni-elder/' rel='bookmark' title='Book Review: Ensemble Methods in Data Mining (Seni &amp; Elder)'>Book Review: Ensemble Methods in Data Mining (Seni &#038; Elder)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.win-vector.com/blog/2010/10/a-personal-perspective-on-machine-learning/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Deming, Wald and Boyd: cutting through the fog of analytics</title>
		<link>http://www.win-vector.com/blog/2010/04/deming-wald-and-boyd-cutting-through-the-fog-of-analytics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=deming-wald-and-boyd-cutting-through-the-fog-of-analytics</link>
		<comments>http://www.win-vector.com/blog/2010/04/deming-wald-and-boyd-cutting-through-the-fog-of-analytics/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 22:53:03 +0000</pubDate>
		<dc:creator>John Mount</dc:creator>
				<category><![CDATA[History]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[A-10]]></category>
		<category><![CDATA[Boyd]]></category>
		<category><![CDATA[Deming]]></category>
		<category><![CDATA[Novum Organum]]></category>
		<category><![CDATA[OODA]]></category>
		<category><![CDATA[PDCA]]></category>
		<category><![CDATA[Wald]]></category>

		<guid isPermaLink="false">http://www.win-vector.com/blog/?p=1421</guid>
		<description><![CDATA[This article is a quick appreciation of some of the statistical, analytic and philosphic techniques of Deming, Wald and Boyd. Many of these techniques have become pillars of modern industry through the sciences of statistics and operations research. We start with W. Edwards Deming. Deming was a statistician who designed many of the production methods [...]
Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2010/08/statsmanship-failure-through-analytics-sabotage/' rel='bookmark' title='Statsmanship: Failure Through Analytics Sabotage'>Statsmanship: Failure Through Analytics Sabotage</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>This article is a quick appreciation of some of the statistical, analytic and philosphic techniques of Deming, Wald and Boyd.  Many of these techniques have become pillars of modern industry through the sciences of statistics and operations research.<br />
<span id="more-1421"></span></p>
<p>We start with <a href="http://en.wikipedia.org/wiki/W._Edwards_Deming" target="wp">W. Edwards Deming</a>.  Deming was a statistician who designed many of the production methods of post-war occupied Japan.  Deming&#8217;s work on quality quantification, measurement and continuous improvement formed the fundamental basis of Japan&#8217;s later rise as a respected manufacturing super power.  Many of the further improved techniques were later imported into the United States as &#8220;eastern wisdom.&#8221;  However, some of the lesser ideas were perverted by eager followers into destructive cargo-cult rituals like &#8220;six sigma&#8221;  (we must remember that it was the depth and power of Deming&#8217;s ideas that attracted the imitators).</p>
<p>One of Deming&#8217;s most fundemental ideas was the &#8220;PDCA loop.&#8221;</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/PDCA.png" alt="PDCA.png" border="0" width="300" /><br />
</center></p>
<p>The PDCA loop is cycle of conceptual and analytic effort that sequences repeatedly through the stages Plan, Do, Check and Act.  The cycle starts with a plan and the next cycle&#8217;s plan is influenced by results of the previous cycle.  The explicit Check and Act steps show the presumption that the Do step will always need measurement and correction.  This cycle is designed to help mitigate Clausewitz&#8217;s observation that  &#8220;no campaign plan survives first contact with the enemy.&#8221;  Deming&#8217;s idea is essentially the systematic application of the scientific method (&#8220;propose/test&#8221;- or Francis Bacon&#8217;s Novum Organum of 1620) to adaption and implementation of plans.</p>
<p>While Deming was teaching planning and &#8220;statistical process control&#8221; to boost US wartime production a number of other statisticians were having great success in developing reactive strategies.  One of the best stories is that of Abraham Wald.  Wald became interested in allied aircraft mortality during World War II.  He prepared a number of studies and charts of surviving aircraft, tabulating where bullet and shrapnel damage was most extensive.  He could, for example, combine inspections of many returning bombers to determine where the returning bombers had the most damage (say the bulk area of fuselage and the leading edges of the wings):</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/b25b.png" alt="b25b.png" border="0" width="300" height="325" /><br />
</center></p>
<p>Wald then had the genius idea of proposing additional armor on the parts of the aircraft that never showed any hits on <em>surviving</em> aircraft (reasoning that aircraft routinely took damage everywhere so the undamaged areas in surviving aircraft must be the areas more often damaged in the unobserved, non-returning lost aircraft).  From the above diagram we might propose to add more armor near the pilots, engines and trailing control surfaces.  Wald later published sophisticated statistical techniques for imputing the distribution of hits (and therefore the distribution of vulnerabilities) on the unobserved aircraft:   &#8220;A Method of Estimating Plane vulnerability Based on Damage of Survivors,&#8221; Abraham Wald, Center for Naval Analyses (1943).</p>
<p>This  art of reactive observation was later systematized by <a href="http://en.wikipedia.org/wiki/John_Boyd_(military_strategist)" target="wp">Colonel John Boyd</a>.   Boyd invented what he called the &#8220;OODA loop.&#8221;</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/OODA.png" alt="OODA.png" border="0" width="300" /><br />
</center></p>
<p>This loop cycles similarly to Demings&#8217;s through a pattern of Observe, Orient, Decide and Act.  The OODA loop differs from the PDCA loop in that it assumes a world that looks back and adapts against your actions.   Boyd added ideas of tempo and pace such as &#8220;short cutting the loop&#8221; (skipping from act to orient or even act to decide) to adapt faster than nature or than your enemy.</p>
<p>Boyd is also famous for applying his and Wald&#8217;s ideas in the design of the A-10 Warthog.  The  A-10 is a unique non-stealth, sub-sonic close air support plane.  It is considered one of the ugliest things to every fly.  The A-10 was not state of the art when it was introduced but it was scientifically designed for survival in the style of Wald.  The engine intakes are partially protected by the wings, there is extra titanium armor around the pilot and a primitive direct lever control system in addition to the traditional hydraulics.  The A-10 is known for its &#8220;lingering ability&#8221; or ability to stay near troops under fire to deliver support.  It has also allowed pilots like <a href="http://en.wikipedia.org/wiki/Kim_Campbell_(pilot)"  target="wp">Major Kim Reed-Campbell</a> to fly for an hour and return to base after losing pieces of wing and all hydraulics.  Here is a picture Reed-Campbell inspecting her damaged A-10 in 2003 after safely landing:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/Reed-Campbell.jpg" alt="Reed-Campbell.jpg" border="0" width="500" height="368" /><br />
</center></p>
<p>Deming, Wald and Boyd were able to move statistics and analytics beyond description and use mathematics for prescription.  The techniques they developed for planning, measurement and reasoning remain relevant to this day.</p>
<p>Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2010/08/statsmanship-failure-through-analytics-sabotage/' rel='bookmark' title='Statsmanship: Failure Through Analytics Sabotage'>Statsmanship: Failure Through Analytics Sabotage</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.win-vector.com/blog/2010/04/deming-wald-and-boyd-cutting-through-the-fog-of-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is &#8220;Genetic Art?&#8221;</title>
		<link>http://www.win-vector.com/blog/2009/06/what-is-genetic-art/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-is-genetic-art</link>
		<comments>http://www.win-vector.com/blog/2009/06/what-is-genetic-art/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 05:17:57 +0000</pubDate>
		<dc:creator>John Mount</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[genetic art]]></category>

		<guid isPermaLink="false">http://www.win-vector.com/blog/?p=125</guid>
		<description><![CDATA[What is &#8220;genetic art?&#8221; My answer to this is http://www.geneticart.org (redirects to http://www.mzlabs.com), but this requires some explanation. The quick answer is this is genetic art: The longer answer is that a number of times different forms of algorithmic art have been invented. Algorithmic art is art generated by mathematical procedures. Such art is similar [...]
Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2010/04/algorithmic-movie-with-texture/' rel='bookmark' title='Algorithmic Movie (with texture)'>Algorithmic Movie (with texture)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>What is &#8220;genetic art?&#8221;  My answer to this is <a href="http://www.geneticart.org">http://www.geneticart.org</a>  (redirects to <a href="http://www.mzlabs.com">http://www.mzlabs.com</a>), but this requires some explanation.<span id="more-125"></span><br />
The quick answer is this is genetic art:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/pic1.png" alt="pic1.png" border="0" width="600"  /><br />
</center></p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/pic2.png" alt="pic2.png" border="0" width="600" /><br />
</center></p>
<p>The longer answer is that a number of times different forms of algorithmic art have been invented.  Algorithmic art is art generated by mathematical procedures.  Such art is similar to earlier mechanical and kinetic art forms.  One branch of mathematics often used to generate such art is called &#8220;fractals.&#8221;  We looked somewhere else for our inspiration (our art is not strictly fractal in nature).  What we worked on we called &#8220;genetic art&#8221; to emphasize the role of encoding and re-combination in the works.</p>
<p>In the early 90&#8242;s Karl Sims presented a number of art installations based on at least three interesting ideas: </p>
<ul>
<li>Transforming images</li>
<li>Evolving combinations of transforms</li>
<li>Direct participation</li>
</ul>
<p>(see: Karl Sims. Artificial Evolution for Computer Graphics. Proceedings of SIGGRAPH 1991 and <a href="http://www.karlsims.com/genetic-images.html">Karl Sims&#8217; homepage</a>).</p>
<p>The part that caught a number of people&#8217;s imaginations was the evolution aspect.  Karl Sims defined a method of combining transformations of original source images.  He then allowed people to manipulate his art installations and &#8220;vote&#8221; on art they liked best.  The more popular pieces were combined (or bred) to create newer works that then put up against criticism.  After many breedings (or generations) the combinations of transforms were quite complicated and a number of unexpected images were created.</p>
<p>At CMU Shumeet Baluja, Dean Pomerleau and Todd Jochem were interested both in the evolutionary aspects of the art and also seeing if a machine could learn to model user tastes (see Shumeet Baluja, Dean Pomerleau and Todd Jochem. Simulating User&#8217;s Preferences: Towards Automated Artificial Evolution for Computer Generated Images. Technical Report CMU-CS-93-198. Carnegie Mellon University. Pittsburgh, PA. October 1993. ).  They built a much simpler art system that combined primitive elements (elements closer to brush strokes than to original pictures) and tried to learn user preferences for complex pictures.  </p>
<p>Figures of this era looked much like this (well better than this, this comes from a scan of a black and white printing of the paper):</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/evolve.png" alt="evolve.png" border="0" width="209" height="205" />.<br />
</center></p>
<p>Scott Neal Reilly built a new, more simplified system; and with Michael Witbrock put the whole thing on the Web.  This was an unimaginably primitive time on the Web. Cutting edge interaction was sites like &#8220;Blue Dog Can Count.&#8221;  The Mac had no forms capable browser and Amazon.com was still a year away from launching.  An interactive art exhibition running directly on the Web (and manipulated by anybody) was a significant step forward.</p>
<p>Michael Witbrock was influenced by the stories of  <a href="http://en.wikipedia.org/wiki/Heikegani">Heikegani Crabs</a> and Alan Turing&#8217;s 1952 paper &#8220;The Chemical Basis of Morphogenesis&#8221; (which theorized how simple systems could develop textures).</p>
<p>At this point I (John Mount) got interested in the project and felt that much more could be done with how such systems handled color.  The art had been simplified to primitive elements that one could think of as brushes (really more like gradients) but the art was essentially grey-scale with a false-color map applied at the last step.  Karl Sims had made transformations on images his primitive operations, I wanted my primitive operation to be transformations on color.</p>
<p>Being a math-nerd I chose to encode color inside a mathematical system called &#8220;Quaternions&#8221; (see Ebbinghaus et al. Numbers Springer-Verlag, Second Edition, 1988).  Colors are often represented as three brightness terms- for example intensity of red, intensity of green and intensity of blue.  The Quaternions were discovered by Sir William Rowan Hamilton in 1843 (see <a href="http://en.wikipedia.org/wiki/Quaternion">Wikipeida: Quaterion</a>).  Sir Hamilton was trying to solve the problem of encoding positions in space in a nice structure and was so excited by his discovery he carved his fundamental formula for them in the Brougham Bridge the night he had his breakthrough.  Quaternions are represented as four standard numbers (so they have enough &#8220;slots&#8221; to encode a position in Sir Hamilton&#8217;s case or in our case a color) and they their selves behave a lot like individual numbers.  There are rules for adding, subtracting, multiplying and even dividing Quaterions.  This means you can write formulas over them and these formulas are now directly manipulating colors (instead of manipulating geometry or intensities as in the earlier systems).</p>
<p>So, as with Neal Reilly&#8217;s system, we represented all of our transformations as formulas and represented &#8220;breeding&#8221; as ripping a bit of one formula out and combining it with another.  For instance these two rather uninteresting color gradients were represented by the formulas:<br />
<center></p>
<table>
<tr>
<td> ( x &#8211; i y ) : </td>
<td>
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/x-iy.png" alt="x_iy.png" border="0" width="150" height="100" />
</td>
</tr>
<tr>
<td> ( x &#8211; i y &#8211; j x &#8211; k y ) : </td>
<td>
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/x-iy-jx-ky.png" alt="x_iy_jx_ky.png" border="0" width="150" height="100" />.
</td>
</tr>
</table>
<p></center></p>
<p>One of our arithmetic operations was named &#8220;mod&#8221; and we could use it to combine the two items into a more complicated formula and somewhat more interesting picture:</p>
<p><center></p>
<table>
<tr>
<td>( mod ( x &#8211; i y) ( x &#8211; i y &#8211; j x &#8211; k y ) )  : </td>
<td>
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/mod.png" alt="mod.png" border="0" width="150" height="100" />.
</td>
</tr>
</table>
<p></center></p>
<p>After enough generations of selection and breeding the formulas get long and complicated (luckily nobody but the machines have to look at them) and the pictures get interesting:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/silver.png" alt="silver.png" border="0" width="300" height="200" />.<br />
</center></p>
<p>Michael Witbrock and Scott Neal Reilly supplied an updated web interface. And at this point we got our 15 minutes of fame:</p>
<p>From Wired 3.01 January 1995 p. 147  Kristin Spence&#8217;s &#8220;Net Surf&#8221; column:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/wired301.png" alt="Wired3.01.png" border="0" width="443" height="252" />.<br />
</center></p>
<p>We also made large prints (using a parallel computation system named &#8220;WAX&#8221; by Peter Stout) and set up an exhibition in a Pittsburgh coffee house.  The development work was largely done on a machine with a black and white monitor (later we got access to a grey scale monitor) so it really was a treat that color was able to fend for itself.</p>
<p>On an unrelated track in 1991 another CMU student, <a href="http://scottdraves.com/history.html">Scott Draves</a>, was pursuing a serious project and building art based on iterated function systems (more related to fractals than our work) and in 1999 added some genetic ideas and released the Electronic Sheep client/server oriented screen saver (inspired by SETI@home).</p>
<p>Recently we have gotten back to some more of Sims&#8217; ideas and allowed more geometric transformations and real source images, such as incorporating some of Dover&#8217;s royalty free Japanese textile designs:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/texture.png" alt="texture.png" border="0" width="300" height="200" />.<br />
</center></p>
<p>The original system was group interactive and an incredible hit (and had its own Zephyr discussion instance- the then equivalent of Twitter).  The current demo is stand alone and server-free, so it is a single player game.</p>
<p>All the user has to do is point a Java 1.4 (or better) capable browser at:  <a href="http://mzlabs.com/MZLabsJM/page4/page22/page22.html">Genetic Art Program</a>.  Click (and hold) on the &#8220;Action Menu&#8221; of any of the sub-windows and select &#8220;take over left selection&#8221; on one picture that interests you and &#8220;take over right selection&#8221; on another picture that interests you.  You will notice doing this copies the pictures to the left and right of the &#8220;breed pictures&#8221; button.  Now press &#8220;breed pictures&#8221; as many times as you want.  Each time you press it you will get a new picture build by combining elements of the two small pictures.  At any time you can have some other picture you like take over a breeding position (again by using its action menu).  And you can also scroll the strip of five pictures around and click on them to introduce previous favorites from the earlier server version of the program into your space of opportunities.</p>
<p>We were originally a bit uncomfortable calling the work &#8220;Art&#8221; but a number of the images have made significant impressions on us and others- so perhaps it qualifies.</p>
<p>Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2010/04/algorithmic-movie-with-texture/' rel='bookmark' title='Algorithmic Movie (with texture)'>Algorithmic Movie (with texture)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.win-vector.com/blog/2009/06/what-is-genetic-art/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello World: An Instance Of Rhetoric in Computer Science</title>
		<link>http://www.win-vector.com/blog/2008/02/hello-world-an-instance-rhetoric-in-computer-science/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hello-world-an-instance-rhetoric-in-computer-science</link>
		<comments>http://www.win-vector.com/blog/2008/02/hello-world-an-instance-rhetoric-in-computer-science/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 02:00:13 +0000</pubDate>
		<dc:creator>John Mount</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Hello World]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.win-vector.com/blog/2008/02/19/hello-world-an-instance-rhetoric-in-computer-science/</guid>
		<description><![CDATA[Hello World: An Instance Of Rhetoric in Computer Science John Mount: jmount@mzlabs.com February 19, 2008 Computer scientists have usually dodged questions of intent, purpose or meaning. While there are theories that assign deep mathematical meaning to computer programs[13] we computer scientists usually avoid discussion of meaning and talk more about utility and benefit. Discussions of [...]
Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2010/02/living-in-a-lognormal-world/' rel='bookmark' title='Living in A Lognormal World'>Living in A Lognormal World</a></li>
<li><a href='http://www.win-vector.com/blog/2009/06/what-is-genetic-art/' rel='bookmark' title='What is &#8220;Genetic Art?&#8221;'>What is &#8220;Genetic Art?&#8221;</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hello World: An Instance Of Rhetoric in Computer Science<br />
John Mount: jmount@mzlabs.com</p>
<p />
<p>February 19, 2008</p>
<p />
<p>Computer scientists have usually dodged questions of intent, purpose or meaning. While there are theories that assign deep mathematical meaning to computer programs[13] we computer scientists usually avoid discussion of meaning and talk more about utility and benefit. Discussions of the rhetorical meaning of programs is even less common. However, there is a famous computer program that has a clean an important rhetorical point. This program is called “hello world” and its entire action is to write out the phrase “hello world.” The action is simple but the “hello world” program actually has a fairly significant purpose and meaning.</p>
<p />
<p>I would like to briefly trace the known history of “hello world” and show how the rhetorical message it presents differs from the rhetoric embodied in earlier programs. In this sense we can trace a change in the message computer scientists felt they needed to communicate (most likely due to changes in the outside world).</p>
<p><span id="more-4"></span></p>
<p />
<p>Since the late 1970’s it has been a tradition in computer science that when facing a new system to start by writing the traditional “first program”, which is called “hello world.” The history of this tradition is not well documented, but WikiBooks claims the origin is in Brain Kerninghan’s 1974 tutorial for the computer language “B.”[14, 8]</p>
<p />
<p>The program itself is as follows:</p>
<p />
<pre>
main( ) {
  extrn a, b, c;
  putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';
</pre>
<p />
<p>From the original context in [8] we can say this is not a pure “hello world” program. The purpose of this program is to illustrate a few functions of the language (“extrn” variables, use of multiple lines and so on) and not to test if the system is running.<br />
The most famous (and a pure) example of “hello world” is found in Brian Kerninghan and Dennis Ritchie’s famous 1978 C book[9]. The code looks like the following:</p>
<p />
<pre>
main() {
        printf("hello, world\n");
}
</pre>
<p />
<p>Equally famous are the early versions in “BASIC”:</p>
<p />
<pre>
10 print "Hello, World!"
</pre>
<p />
<p>In both of these examples the purpose of “hello world” is clear: it is a trivial computer program that does nothing but print a single line of text. If this can not be made to work then nothing can be made to work. “hello world” is in fact a somewhat confrontational program. The author is saying “it isn’t obvious your computer system will work, so I am not going to invest a lot of time in it until I see it can at least print one line of text.”</p>
<p />
<p>Writing “hello world” as the first program on a new system was certainly a well known tradition by the late 1970’s. We can ask: did this tradition showed up late or early in the history of computer science? </p>
<p />
<p>The first modern computer is commonly credited to John von Neumann in 1945. This attribution of “first” was made before a lot of previously secret information on Bletchley Park’s and Konrad Zuse’s work in Germany were well known, but von Neumann’s work was definitely the known foundation that later work built on. Donald Knuth credits von Neumann with the first modern computer program[10]. In any case we can securely place the invention of the modern computer to the early to mid 1940’s. It seems like “hello world” was not written at that time because it made entirely the wrong rhetorical point.</p>
<p />
<p>In fact von Neumann’s first program (in 1945) was a sorting algorithm (proving the computers could at least replace tabulators)- it was important to prove that not only could the computer turn on but that it could do something.</p>
<p />
<p>The 1957 description of FORTRAN starts with a program that solves for roots of an equation.[4] John Backus himself says the prior to 1954 “almost all programming was done in machine language or assembly language”[3] (which would make “hello world” an unlikely first program as numeric operations are typically much more succinct than string manipulations in these languages).</p>
<p />
<p>The 1958 UNIVAC Math-Matic Programming Manual first examples are (predictably) equations involving trigonometric functions.[5]</p>
<p />
<p>In 1959 the Algo 58 standard [2] had no concrete example programs- the purpose of this document was to show that program syntax could be specified and to discuss the techniques of specification (so a runnable example did not serve their argument).<br />
John McCarthy’s paper on recursive functions (LISP) starts with examples partial functions and conditionals (to get to terminating recursion as fast as possible).[11] The Lisp1 manual [6] concentrates on the translation of information into data-structures (an important point) and the Lisp1.5 manual [12] is written for the famous “bottom of page 13” moment where “eval” (essentially the semantic core of LISP) is defined in a few lines LISP code.</p>
<p />
<p>The computer language “BASIC” seems almost designed to support “hello world.” Instead the 1964 BASIC manual[7] starts with a lively discussion of what a computer program is (as a process) and the first example program is a highly useful program that solves simultaneous equations. The point again being that useful work can be done.</p>
<p />
<p>Even as late as 1972 “hello world” does not seem to be the obvious message. For example the popular BASIC tutorial called “My Computer Likes Me, When I Speak in BASIC”[1] does indeed start with a simple program that only writes a line of text. But the line it writes is “MY HUMAN UNDERSTANDS ME.” This is making a very different point than the point made by “hello world.”</p>
<p />
<p>While I have skipped a number of languages of the period (Autocode, COBOL, APL, SNOBOL, PL/1, Logo, BCPL, Forth, Smalltalk &#8230;) we can see the general trend: fist programs had to make a point. By the dates it seems that once invented the “hello world” tradition took off and spread very quickly. Writing such a program serves a useful purpose as a test so the practice probably spread quickly once the rhetoric of the earlier programs was no longer needed. That is “hello world” became popular once computer scientists no longer felt that society needed to be persuaded of the ultimate utility of computer systems.</p>
<p />
<p>With the increasing complexity of modern systems “hello world” is a more important test than ever. “hello world” is sometimes called the hardest application to deploy. The idea is that once you learn your lessons from deploying it then deploying a second, more sophisticated, application seems relatively easy. I often find that I can lean the true nature of a system by deploying “hello world.” If writing and deploying “hello world” is a sufficiently unpleasant task in a system then it is likely that every other task in that system will be similarly unpleasant.</p>
<p />
<p>In the end “hello world” serves the same purpose that it always has (testing if a system in fact works) and it stands as a rhetorical marker signifying that we are now living long after the skirmishes of the computer revolution.</p>
<p />
<p><strong>References<br />
</strong></p>
<p />
<p>[1]	Albrecht, B. My Computer Likes Me, When I Speak in BASIC. Dymax, 1972.</p>
<p />
<p>[2]	Backus, J. W. The syntax and semantics of the proposed international algebraic language of the zurich acm-gamm conference.</p>
<p />
<p>[3]	Backus, J. W. The history of fortran i, ii and iii. ACM SIGPLAN Notices 13, 8 (Aug 1978).</p>
<p />
<p>[4]	Backus, J. W., Beeber, R. J., Best, S., Goldberg, R., Haibt, L. M., Herrick, H. L., Nelson, R. A., Sayre, D., Sheridan, P. B., Stern, H., Ziller, I., Hughes, R. A., and Nutt, R. The fortran automatic coding system. Proceedings of the Western Joint Computer Conference (Feb 1957).</p>
<p />
<p>[5]	Corp., R. R. U. UNIVAC math-matic programming system. Sperry Rand, 1958.</p>
<p />
<p>[6]	Fox, P. Lisp 1 programmers manual. 165.</p>
<p />
<p>[7]	Kemeny, J., and Kurtz, T. Basic.</p>
<p />
<p>[8]	Kerninghan, B. W. A tutorial introduction to the language b.</p>
<p />
<p>[9]	Kerninghan, B. W., and Ritchie, D. M. The C Programming Language. Prentice Hall, February 1978.</p>
<p />
<p>[10]	Knuth, D. E. von neumann’s first computer program. Comp. Surveys 2, 4 (1970), 247–260.</p>
<p />
<p>[11]	McCarthy, J. Recursive functions of symbolic expressions and their computation by machine, part i.</p>
<p />
<p>[12]	McCarthy, J., Abrahams, P. W., Edwards, D. J., Hart, T. P., and Levin, M. I. Lisp 1.5 programmers manual. 116.</p>
<p />
<p>[13]	Tennent, R. D. The denotational semantics of programming languages. Communications of the ACM 18, 8 (Aug 1976), 437–453.</p>
<p />
<p>[14]	Wikibooks. http://en.wikibooks.org/wiki/Computer_programming/Hello_world#B, 2008.</p>
<p>Related posts:<ol>
<li><a href='http://www.win-vector.com/blog/2010/02/living-in-a-lognormal-world/' rel='bookmark' title='Living in A Lognormal World'>Living in A Lognormal World</a></li>
<li><a href='http://www.win-vector.com/blog/2009/06/what-is-genetic-art/' rel='bookmark' title='What is &#8220;Genetic Art?&#8221;'>What is &#8220;Genetic Art?&#8221;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.win-vector.com/blog/2008/02/hello-world-an-instance-rhetoric-in-computer-science/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

