How to accelerate Academic communication

There are many possible steps for improving the quantity and quality of scholarly communication:

– usage of English instead of local languages

– usage of Lyx / LaTeX instead of complicated DTP-workflow with Quarkxpress

– usage of “academic social networks” instead of publishers

– cost reduction in reading and publishing

– usage of Wikipedia

It’s is remarkable that nearly no of these points are realized today. In most countries of the world, for example in Japan is the academic language mostly Japanese. That means, the authors are using their own alphabet and their own vocabulary for talking about medicine, humanities or computing. The same is true for the next advice. The normal publication pipeline (even in US countries) is that the author writes a manuscript with MS-word, sends this with snail-mail to the publisher, and they are reading in the papers with a flatbed scanner and formatting the same text again with Quark-X-Press. That it is not a joke, that is the normal method of how at least 50% of the scientific output is created. The next possible acceleration would be the usage of “Academic social network”.- Today, worldwide this method is nearly unknown. 0% of all papers are published in Academia.edu or similar services.

If one or even all advices are realized then the communication speed would increase dramatically. That means, that the quality would increase and it is easier to introduce new authors to the community. The reason why a neoluddistic work-habit is so widespread in academia has to do with over-regulation of the system. Academia has no motivation to increase their productivity. Some of them like the famous astronomer Clifford Stoll argues, that using a computer instead of his lovely typewriter would weaken the quality of his paper. Everything which is slow and expensive is seen as high-quality method. This attitude prevents technical progress.

WIKIPEDIA

The last point on the list is “Usage of Wikipedia”. Today, Wikipedia is mostly ignored by academics. They think, that an encyclopaedia is not real science. But a short view on the statistics shows, that science-related articles inside Wikipedia generates much traffic. For example, the article “pathfinding” has 300 visits per day. that’s 109500 on a yearly basis. If an academic has written this article, he would be the author of the most ever read paper worldwide.

Additionally, Wikipedia pages are often cited in academics paper. Even if all guidelines are recommend the opposite, is citing the wikipedia a must have for most academic papers. But what is the consequence if the url “https://en.wikipedia.org/wiki/Pathfinding” is cited in around 500 academics paper? It means, that 500 papers are referencing this source. So it can be called a fundamental building block of scientific knowledge.

Often, Wikipedia is recognized as a non-academics platform. Because the quality of the articles is low and everybody can write one. But in reality, Wikipedia is the forefront of academia. There is no such thing like a second, better WIkipedia version which is used at the universities. The reality is, that the average professor is using Wikipedia plus Google Scholar and that’s all the information he has. Or the make the point very clear. Publishing in article about a scientific topic inside wikipedia is more complicated and more prestigious then see an article in nature. “Wikipedia first” is the goal, which means that only ofter publishing something into the encyclopedia it is possible to write a dedicated science paper which is published in a journal. The reason is simple: a science-paper can be ignored by the academic community. Not all researcher are reading the “nature magazine”, but all researcher are reading Wikipedia. The main advantage is, that in an Wiki-article the relevant literature is cited so i call Wikipedia together with Google Scholar one of the most important tools, which Academia has today.

The reason why Wikipedia is normally not called a reputable source has to do with the fact, that no original research is published there. Wikipedia is not a journal for primary research but it is popular oriented. But what exactly is “original research”? Mostly it is something new, it is based on the known facts which are enriched with an innovative idea. In most cases, original research is not really new. All what the scientific author has done is to understand the literature of the past completely. Or to explain it from another point of view. If somebody is diligent and he collects all the given information about a subject, than the step to something new is very small. If the information are not well edited, it is impossible to put the innovative addon onto the top. I would call Wikipedia the real science community, because it has the baseline as the goal, from which one some single researcher can invent something new. Nearly all possible innovations of the future are given by the published paper of today. The question is only, which papers has to be combined to solve hard problems.

Advertisements

Neural Turing Machine

Neural networks have a long history. Their latest achievement so far were the image recognition challenge with so called Convolutional neural networks. Additional to CNNs many other kinds are out there for example: RNN, LSTM, NTM and “Differentiable neural computer”. The last one is so far the most advanced neural network ever invented. It can do all the tasks what a normal turing-machine can do but it is trainable. It is similar to genetic programming.

So, what can we do with an Neural turing machine which has memory? Not as much, in the arxiv paper only simple examples are give like copying bits from place a to place b. That is not very impressive. A neural turing machine is capable for inferencing a single part of a broader algorithm. The question is, of how to make that usable for solving complex task? One possibility is to combine a NTM with “language grounding”. Grounding means to connect a problem solving technique with natural language. For example, task1 is called “grasp”, task2 is called “ungrasp” and task3 is called “move”. Every task is represented by a NTM and is learned separately. Solving complex tasks means to put the verbs together to a sentence like “grasp, move, ungrasp”.

The main problem with all Neural networks is the high cpu usage. In theory they can learn long programs, in reality this would takes millions of years to run on a gpu hardware from nvidia. Only if the problem is small and compact it is possible to train the neural network in a short time period. For example, a problem like “add 2 to input” can be learned by a neural network easily. After some examples “0+2=2, 10+2=12, -5+2=-3” the network has found the algorithm for his own. This function represents the word “add”. The problem is, that a normal computerprogram consists of many subtasks.

A good testbed for implementing neural turing machines is a multimodal games. That games have to be solved with “Reinforcement learning” in combination with language grounding. Instead of only go to a certain place (which can be learned easily by all kinds of neural networks) the agent has to do abstract tasks like climbing a ladder, open a door and so forth. This result is a hierarchical architecture which consists of a lowlevel and a highlevel layer. The lowlevel tasks are solved with neural networks, the high level tasks with language.

LIMITS

In a recently published paper “Beating Atari with Natural Language Guided Reinforcement Learning”, https://arxiv.org/pdf/1704.05539.pdf a sophisticated neural network is presented which can solve the game “Montezuma’s Revenge”. From a technical point of view, the authors (all from Stanford university) call this principle “Reinforcement learning”. But the main reason why the game was solved is located in the grammar. In the appendix of the paper the 18 different commands are presented, for example “go to the right side of the room”. These commands are working as options, which is equal to a multimodal-neural network. Has the neural network found the commands alone? No, the commands where coded by hand. So the solver is not really an example for reinforcement learning but is a handprogrammed hierarchical macro. The correct name for the paper would be “Scripting AI for language grounding in Atari Games”.

According to the paper, the subactions were learned by the network. But it would also be possible to coding them manual. For example the task “climp down the ladder” can be expressed as a short piece of code which navigates the agent the ladder down. Even without any kind of reinforcement learning it is possible to solve the Atari game.

It remains the question of how to find the commands and the implementations for a given problem. If the game is not “Montezuma’s Revenge” but Tetris, then the grammar looks different. Finding such grammar without human programmers seems impossible. To express this problem in detail: suppose we are removing one command of the task list. Instead of 18 commands, the agent has only 17 commands. And the task is to find the removed command. It seems difficult or even impossible to do so. For example: if we remove both climb commands, how should the neural network know, that climb is the right word for using the ladder? The only place where such information can be found is a walkthrough tutorial which is normally written in english language. So before building a reinforcement learning solver, a natural language parser is necessary and additional a searchengine for finding such walkthrough tutorials.

Another possibility are plantraces which is utilized by “Learning to Interpret Natural Language Navigation Instructions from Observations”, http://www.cs.utexas.edu/~ml/papers/chen.aaai11.pdf On page 2 they give some details about how the learning proecudure works. As input pattern the system gets:

– natural language instructions

– observed action sequence

– world state

From technical point of view it is possible to formalize the learning steps into an authoring system. Because the observed action sequence and the worldstate is given by the game, only the language instruction is missing. So if the human-operator gets a microphone and say loud the action what he is doing now, than a huge corpus can generated in short timeperiod. This corpus is feed into the neural network …

Writing English for non-native speakers

Writing long papers in English is difficult, especially without the language-privilege to have learned English as the first language. I want to give some advices of how to mastering the task and write long articles in a short amount of time.

A first it is important to know that the result is not comparable to the text of an english-native-speaker. The reason is, that English has different levels of which the top level is most difficult to learn. What non-native speaker can mastering in reality is called basic-english or with with more effort “business-english”. The difference is, that the vocabulary is reduced, the grammar is only sometimes correct and every true speaker of English will see that the text was written by somebody who have learned the language. The question is not, how to write a perfect document the question is more, of how to write basic-english.

In the first step, writing down the paragraphs has priority over correct spellchecking. That means, instead of preventing errors, the author should write as fast as possible. This results normally into many errors. In the second step, called proofreading, these errors have to be fixed. A good help is the integrated spellchecker of the word-processor. And some major grammar rules can the author correct by himself.

After the second step, comes no other third step. Instead it was the complete workflow. It results into a text, which is nearly 80% correct. It has no spelling errors, a reduced vocabulary, and minor grammar errors. The text can be understood by nearly half of world population and can identified clearly as written by a non-native-speaker. But, more is not possible. It is the maximum what is reachable and in most cases it is enough. In school notes, such documents gets only a mark 3, because the student is not really an expert for the language. But who cares? Mark 3 for an English text is better than writing no paper.

The interesting aspect in writing English is, that compared to the mother tongue the extra effort is not very high. I would assume that writing in English takes 2 hours while writing the same text in German takes 1 hour. In comparison, the potential readership is much higher. Instead of 100 million people, the text can read by 3 billion people. That’s 30x more.

Change language to German

Switching the language from English to German is possible in most cases. In the above pictures, the dialog menus of Lyx and WordPress are shown which both support German-language out of the box. With a simple click into the dropdown field it is possible to change the preinstalled language systemwide. The difference is, that no longer the word “file” is used in topleft menu but instead the german variant, which reads better. The same is possible for webframeworks like wordpress where the name “home” can be changed into the local german language. Normally this works because in the background so called language-files are used in which for the english-nouns also the translation is stored in the foreign language. After clicking the button, the software or frameworks are using the new vocabulary.

Tools for robotics programming

In the last time, the number of postings dedicated to robotics was small. The reason was the transition from German-language to English and as a result the lower overall output. It is still the case that writing in English is a bit slower than writing the same text on German. So I have an excuse why the main topic in this blog, artificial intelligence, is currently in the background.

Today I want to heal this vexation with an introduction in general techniques of how to program a robot. I’m not sure, if the following tools are widely known but repetition is always good. At the beginning I want to start with a survey in programming languages. To make it a short: C++ is the best programming language. The syntax is easy to read, the execution speed is extreme high, the language can used for lowlevel- and highlevel-tasks and last but not least the object-oriented style is fully supported. I admit, that learning for beginners isn’t easy. The tutorial on http://www.learncpp.com/ is a bit longer and consists of bit-manipulation up to STL templates all, what the C++ expert needs. For most beginners this tutorial is perhaps a nightmare and I understand everybody who prefers Python over C++. On the other hand it is possible to use only a subset of the language, which is similar to normal python code, so that in reality even newbies will see no difference between both languages.

Here is a short example of a minimal C++ program which looks friendly:

 
#include <iostream>
#include <string>
#include <SFML/Graphics.hpp>

class GUI {
public:
  sf::Event event;
  std::string selecttool="left";
  
  void run() {
    mysettings.window.create(sf::VideoMode(800, 600), "SFML");
  }
  void out() {
    mysettings.window.clear(sf::Color::White); // clear
    mysettings.guimessage.clear();
    mysettings.guimessage.push_back("selecttool "+selecttool);
  }


int main()
{ 
  GUI mygui;
  mygui.run();  
  return 0;
}

I have not tested the code for compilation and perhaps it will produce errors, but from the first impression it is not more complicated than Java, Python or C#. At the bottom is the main-function and above is a GUI class which consists of some methods. Thanks SFML most routines for drawing windows are implemented so it is possible to describe C++ as an easy to learn programming language. It is not more complicated to build the first application from scratch than with any other language.

What programming makes hard, is not the syntax of a concrete language it is more the right usage of external libraries. For example if not SFML but a 3D framework is needed plus a physics engine and some kind of animation routines, this would result in a more complicated software. But this is also true for non-C++ languages. At a conclusion my advice for novice is to switch as fast as possible to C++ because there is no language out there which is more powerful.

I have read some online discussions about what the best programming language is. Most arguments for example in “Perl vs. Python” are right and it is funny to follow such discussion. One detail in such comparisons is remarkable. Until now, i had never read a comparison between C++ and another language where at the end C++ was in disadvantage. Sometimes the discussion is held with “C++ vs. C#” in mind, but the arguments for C# are weak. Even hardcore C# users in the context of Unity3d are not so briskly that the claim that C# is superior. So it seems, that until now C++ is the queen of all languages and any other language accept this. I can say, that it is 99,9% sure that the next ten years nobody will start a thread where he seriously doubts the dominance the brainchild of Bjarne Stroustrup.

Apropos most dominant alpha-tool. Another software which is known as nearly perfect is the versioncontrol system “git”. Even programmer who are using something different are secretly fans of it. And it is not only used in Linux environment but also under Mac OS and Windows is git the most powerful software out there. To explain the benefits is not so easy as it looks. I would describe the software as a backup tool where every snapshot get a comment in natural language. Especially the multi-user feature of git makes it indispensable for every serious programmer.

After this short introduction of how to program a software in general now comes the part which has to do with robotics. What is robotics? The best answer to this question was given by Brosl Hasslacher and Mark W Tilden. Their essay “Living machines” from 1995 is the definitive introduction in the subject. What they left out is a detailed description of the nv-neurons, which are controlling the BEAM robots. nv-neuron looks similar to a positronic brain in Startrek, it is some kind of science-fiction which is not clearly defined in science. Some people say, a nervous network is a neural network like the LSTM network which was invented by Jürgen Schmidhuber, other say, that it is Robot-Control-System like ROS from Willowgarage. Perhaps the answer is somewhere between both?

Something is sure: with a neural network, plus a robot-control-system plus a robot-development-environment it is possible to matering robotics. That starts from walking robots, goes over flying robots, working robots, household robots and ends at social robots which are looking very cute. The discipline overall is fascinating because it is so widespread. Realizing a robot consists of endless subtasks which goes over all academic-topics. From mechanics, electronics, programming, language, humanities, algorithm, human-brain-interfaces up to biology is all necessary. So robotics and artificial intelligence is a meta-science which consists of everything. In the 1950’s the claim was named under the term Cybernetics which was a synonym for all and nothing at the same time. Today’s robotics has the same goal in mind, but this time it works.

At the end i want to betray what dedicated newbies can do, who have no experience with robotics or programming but want to create something. A good starting point is to program an Aimbot with the AutoIt language. How this can be done is explained in youtube-clips. The interesting aspect is, that Aimbots are normally not recognized as real robots, but they are. I would call them highly-developed examples for artificial intelligence, because it is possible to extend an Aimbot easily to an advanced robot.

GETTING FEEDBACK

In computing and especially in artificial intelligence the dominant form of getting feedback is negative connates. That means, what a programmer strives for is a bug or an error. That is the only possibility to learn. Writing a program means normally to producing a compiler error. And if the compiler says, the program is working than you need at least one feature problem, so that the programmer can write a bug report. Or to describe the dilemma colloquial: Nobody at stackoverflow wants to read of a working project, what the guys are interested in is a robot which doesn’t walk, a for-loop who doesn’t work or a problem which is unsolved.

Transition to OpenScience

Some people argue, that OpenAccess is an ideology-movement which is driven by activist who are in opposition to the old school publishing system. No it’s not. OpenScience consists of economical and technical benefits which results into changed behaviours. Economical it means the reduction in publishing costs down to zero. No costs for reading a paper, and no costs for publishing it. The question is not, if PLOS One or Springer journal is the better alternative, the question is only where I can upload my pdf-file for free and that is the right choice. From a technical point of view, OpenScience means the use for advanced opensource software in the publishing workflow. Software-tools which are located in the Linux-environment like Jabref, Lyx, pdfgrep, Python and so forth. Here is also the baseline, that the name of the software is not important but it must be available under a GPL license. Without such a license it makes no sense, to recommend a softwareproduct anymore. And even if a program like Recoll (fulltext search in pdf files) is in comparison to Mendeley the weaker choice has Recoll the advantage that it is available in sourcecode so it’s automatically better. Because the user is independent from the manufacturer.

Blogging on German or English?

Sometimes new Bloggers come up with the question if they should Blog on German, English or perhaps both. Mostly the question is asked, because the skills of writing in English are not very elaborated and the Blogger feels better, if he can write in German. On the other hand he knows the English would be better, so what is the right decision? For answering a short look into bilingual-biogs like Scienceblogs. There are postings in German and English both, for example this one http://scienceblogs.de/klausis-krypto-kolumne/2017/12/10/revisited-four-unsolved-crypto-challenges-of-germanys-federal-intelligence-service/ . Most German readers are not amused about bilingual blogs. They expect, that they can find on a German blog all postings in German, so the above cited English post would be a no no. Surprisingly the critics is not very strong, because with some english postings the blog gets an international alignment. And i would go further and say, that a real german blog must be written in English, especially in an English with a German pronunciation …

It remains the problem of how to write such texts if the own vocabulary is weak. Thats indeed a problem, the solution is simply a bilingual dictionary from German into English. Such dictionary can be used on-the-fly while writing a sentence. I tried out by myself and it works pretty good, unknown words are typed in into google and after click on search the English word is shown. That “word by word” translation is the best practice method for learning a foreign language. In contrast, other kinds of dictionaries like monolingual or English-to-German are useless.

What is the consequence of posting English blogposts? The consequence is a different visit-structure. An article in German language is accessed only from Germany. All IP-adresses who are sending a get-request to the server are coming from inside the countries borders, sometimes some request are from Switzerland and Austria. But, if an article is published in English, the IP-requests come from worldwide: UK, Australia, India, China, Russia or whatever. This is surprising on the first look, because normally outside of Germany the language is widely spoken. But apparently not so much, that somebody would read a blog.

I do not recommend to write an English-only blog, but English should used as the first language and any other language as complement. This works not only for private blogs, but also for the Wikipedia. In general, the English-version is the main edition, all other variants are in addition. Who wants to know exactly the consequences for the traffic counter can compare the statistics of an English-article with the German counterpart. Normally there is a difference.

CRITICS

The advice of blogging in English only is not undisputed. Sometimes the English of non-native speakers reads more like Globish, which is an English-like dialect with a reduced vocabulary and easier grammar. That new world-language is understood everywhere but is under fire. The main reason why the Japanese often speak no English is because they want to prevent to be recognized as a foreigner.

In reality there are many options for speaking English. The easiest form is the Basic English, a more advanced variant is business English and at the top is native-like English. Speaking and writing in Basic English is easy. The other, more elaborated language-alternatives are complicated to mastering. Mostly, it depends on training of how often the language was used actively.

As a conclusion I can say that blogging in simplified English is a good starting point for learning the language and results into a wide readership worldwide.