Bragi's take on neural networks, AI and more RSS 2.0
# Monday, March 09, 2009

Despite it's youth, N²D is already quite a large and rather complex application. Things like this tend to have a steep learning curve.  Off course, climbing a mountain is a lot easier if you have a map and proper control over your equipment.  I am working on the map, tools are up to you though.  There are many ways you can play with the application without actually having to design a proper neural network. Here's a short guide.

Viewing and importing thesaurus data

N²D has access to the English version of the WordNet database through a sensory interface (input/output port). Apparently there are WordNet database for other languages, but these are not yet available. To open the view for the WordNet data activate the menu item: View/Communication Channels/WordNet (note: opening for the first time can take a little time as the database needs to be opened, should get fixed somehow in the future).  This should show something similar to (although with less text):

image

You can search for words in the database.  All known meanings will be displayed. You can also select to show a specific relationship type with the drop down list.  If 'As Part' is pressed, all entries that contain the specified text will be shown.  You can either import a single meaning separately or the whole lot, including all the relationships (advised) and see the network grow.  The system should be able to do multiple imports at the same time (you'll notice that a single import can take a long time, depending on how many relationships there are for the word). While the network is learning, the green box in the right bottom corner is filled.

You can browse through all the imported items from the thesaurus view.  You can select the type of relationship you want to see.  All root tree items represent root neurons for the specified relationship. With the text box, you can search for words in the tree. All neurons can be dragged to other locations (like mind maps for instance, see further).  It is also possible to add items to the tree by dropping them on the level they should reside.

Creating Mind maps

Mind maps allow you to draw neurons in a free form manner, similar like vector graphics. There are multiple ways to create new mind maps, you can:

  • use the menu: Insert/Mind map
  • use the toolbar button (4th from left)
  • or when on the 'Project' tool window, use the local toolbar button.  From here, you can also create sub directories, change the name of the project items (F2),... Note: Mind maps (and all other project items) are added to the currently selected folder or the folder that contains the currently selected item.

image

Most of the mind map commands are currently only accessible through it's context menu. For creating new items, you can also use the toolbox. You can add different types of neurons or change them to another one.  Watch out with changing the type though, cause this might loose data sometimes (for instance, when you change a cluster into a regular neuron).

If you select a neuron, you can use different ways for showing 'related' items, like children, incoming or outgoing links and clusters to which the selected item belongs. You can also manage to which clusters it belongs.  If you have multiple items selected, you can quickly create a cluster for them through the 'Make cluster' command.

The easiest way to create a link between 2 items is by selecting them both (the first will be 'From', the second 'To') and activating the 'Link' command. This will show a dialog with From and To already filled in, so you only have to select the meaning of the link.

As a side note, 'Sync with explorer': a very useful command, accessible from the main toolbar, allows you to quickly find the selected item in the explorer.  This can be used from most places in the designer (all items that have a neuron as backing).

Drawing

Yes, N²D is also a drawing application, although some further evolution is clearly needed in this area.  Drawing capability is provided so you can work with the visual sensory interfaces. To create a new image channel, activate the menu command Insert/New Image channel.

Perhaps a word about the difference between a sensory interface and a communication channel: the underlying network has sins, which are also just neurons and have no 'functionality'. N²D, the designer, creates a 'communication channel' for sins so you can work with them. If you use the network in a different application, the communication channel might look completely different, but the sin is still the same.

image 

An image channel currently has 2 sections: the left part to manage/import multiple images (which is not yet fully functional) and a right part that will eventually contain 2 sections: an input and output section.  The output is currently not yet visible, but is supposed to function as the output part of the sin, so you can see images/videos that the network generates.

The input section works as an ink canvas, so you can use a pen table, and apply pen pressure (this can be toggled). The shape, size and color of the pen point can be selected. It is also possible to switch to a gum or selector.

Commenting

All neurons and some other types (like mind maps and frame editors) can have a description.  This is a FlowDocument (rich text format), so you format the text. Spell check is also provided. The description of the currently focused item is shown, you will have to make certain that the 'Description' Tool window is visible. 

image

Standard text editing functionality is present:

  • Select the font type
  • and font size
  • Bold/Italic/underline and Outline
  • Bullets and numbering
  • Spell check

As a side note: The selected item is a NeuronCluster, so it can have child neurons.  The explorer in this screenshot, is set to display it's side panel which contains all the children of the selected cluster. Just like from the explorer, you are able to drag items from the left panel.  It's also possible to drop neurons on the panel, which will add them as children to the selected cluster.

Creating frames

Frames are a form of compound objects (a group of neurons that form a single unit) which can be used to translate input from one form to another and to connect code to these compound objects. They are created in a similar way like mind maps, and can also be managed from within the project tool window.

image

To create a new frame, you basically push the toolbar buttons in sequence:

  • The first one will create a new frame (a frame editor can contain multiple frames, usually they are related to each other somehow).
  • Next, you create a frame element for the selected frame (make certain there is one selected, there are still some bugs in this area). You can also drop items to be used as frame elements.
  • The third button creates a new frame evoker (all neurons in this list are put in a cluster 'Evokers', so you can easily do searches on them, more on that later). Like frame elements, you can also drop already existing items in there.
  • On the last tab, you can edit all the sequences for the frame.  Use the 4th toolbar button to add a new sequence, make certain it is selected and use the buttons to add/remove or move up and down the frame elements from the first tab to build a sequence.
  • The last toolbar button is used to display the 'Import from FrameNet' dialog, with this frame editor already selected.

Importing frames

If you don't feel like creating your own frames, you can always see if they have already been included in FrameNet, which you can import, either from the menu Tools/Import from FrameNet or from the toolbar of a frame editor.

image

You can search FrameNet using the textbox in the upper right corner. The first time you select a row in the upper list might take a little time, this is because he is loading the WordNet database (which takes a little time). This is required to provide a mapping between FrameNet and WordNet data (not provided by default). Some mappings have already been created but most still need to be defined.  Each time you display this dialog and change some mappings, these will be saved.

There are many more things to discover in the designer, but I'm all out of words for today, so I'll continue this on another occasion.  In the mean time, lot's of fun playing with your new toy.

Monday, March 09, 2009 8:20:05 PM (Romance Standard Time, UTC+01:00)  #    Comments [0] -
Getting started | N²D
# Saturday, March 07, 2009

A note about the system requirements for N²D. The installer is about 45 meg to download, but the app itself takes up over 440 MB and projects may also explode fairly fast so be prepared for a large peace of real estate usage on the hard disk.  This is largely due to the WordNet and FrameNet databases.

The whole thing is written in C#, the designer in WPF.  So for the time being it is strictly windows stuff (XP or vista). The core neural network and sensory interface libraries should be portable to Mono but the designer will be a tat difficult. I don't know yet how to tackle this one.

With regards to processors I can be simple: the more the better.  This is a massively multi threaded application, so the more cores the faster it should run.  I only have a dual core here, so I haven't had the change yet to see it running on lots of threads simultaneously, but I would love to find out.  As I am writing this, I am sure there will still be a lot of bugs to filter out.

So to recap:

OS: Win XPSP2/Vista
Platform: .net/WPF
Hard Disk: + 450 MB
CPU Cores: as many as you can find Tongue out

Saturday, March 07, 2009 2:30:33 PM (Romance Standard Time, UTC+01:00)  #    Comments [1] -
N²D
# Thursday, March 05, 2009

Since every blog needs a first post, I thought I'd make the subject a little appropriate and start with the birth of the idea that eventually came to generate this blog. I guess this story starts about 2 years ago, round early 2006, just after doing my evening meditation exercises. This, by the way, tends to be one of my default thinking cap times (I usually also have one in the morning, afternoon and early evening). Ideas tend to come to me in flashes, heavy bright, very intense and just as short flashes.  This one was no exception.

I believe I wrote the idea down somewhere, as I usually do, in order not to forget it, just don't ask me where that paper would be.  I have always found it ironic that I am not able to remember any of my ideas if I don't write them down, however once written, it is known and I usually don't need to consult any papers again to remember, but if I forgo this, oh dear,...  Very annoying at times (especially if there is no paper around). Anyway, ideas come in all shapes and forms, some are good, some bad, some are hard to tell.  This one fell in the latter category: simple, elegant, but lets kid ourselves not: very far fetched.  So for a long time, I focused on other things, things I new would work, things that are within reason.

At this point, I should note something about my health. you see, for the last couple of years this had slowly been going downhill. Back & leg pain and fatigue had been plaguing me for the last couple of years, in crescendo ever since the age of 23-24.  At the beginning, it was believed to originate from a back injury, but because of it's persistency other paths were considered, but never fully acknowledged. So, for a long time, I simply struggled along, basically hoping for the pain to go away, which it did on occasion, giving me hope again to one day be able to pick up where I left off.  So I maintained my programming skills, learned what needed learning and tried to find my way in this world.

Things took a turn though, somewhere round March of 2008 when I began to feel a nuisance in the stomach. After an initial endoscope, the doctor appeared somewhat concerned and didn't immediately inform me of his findings but instead sent a letter to my local doctor explaining things and requesting some further observation.  Apparently he had seen something that looked remarkably a lot like Crohn's disease. Off course, as soon as that name was mentioned, I new,... If crohn was in play, all these years could simply have been the foreplay for Bechterew's: FUBAR. At that time, I panicked.

To properly explain my reaction, I should probably first tell you about my love for moving images in all shapes and sizes (preferably with some colors though). My humble gratitude goes out to Edison, Baird, Zworykin, Farnsworth, and so many others who helped to create this most wonderful of teaching instruments.  With this little box, I was allowed to live a thousand different lives without having to suffer any of them. A most educating experience.  (Note: I must admit, I don't know yet how to judge it's current evolutionary path.  In some ways it's probably good in others just crap.  I do know though, that I watch a lot less lately, more perhaps on that later). Anyway, thanks to TV, I was allowed to discover my worst fear: dying, knowing I had the potential but not the guts to simply try. You see, my panic stemmed from the idea that if Bechterew's is at play, I might not have that many useful typing years left, and from a previous experience, I knew how projects like this can horribly wonder out of there original time frame. 

Decisions were made.

In order to achieve the most rapid development time possible, I decided to cut every corner I could.  Basically this means I simply wrote the app in one go.  I didn't make any design papers, there isn't a single test, nothing. The code is fairly well documented though, for my own sanity. Work schedule was simple: mornings to control the pain and get the machinery going, afternoons and early evenings coding, late evening meditating on tomorrows tasks so the next day could go as smooth as possible. This schedule only got interrupted for required events like family dinners and recovery periods (days I was not able to type or everything was just hurting to much for any sane thought to emerge).

To guide me through the code as design paper, I simply replayed the idea scene over and over again in the evenings so I could carefully observe all the details. How, as a thought, I was traveling over the links which were generated just in front of me.  How all of a sudden I split up into many different paths, some growing thicker, some thinner, others simply dying out. How these splits could form loop backs and how they finally join again.

Somewhere round august, my doctor noted things weren't improving and changed my medication to Humira. This was a life saver. Recovery periods got shorter and shorter, and farther in between.  Up to the point that the last one must have been a couple of weeks ago now and only lasted a day. Pain also got less and less. I'm not pain free yet and eating is still no fun. The back can also still let itself be known.  But at least I am able to function somewhat again.  So development speed picked up and as the whole thing slowly began to work, I realized this might actually be something. So I eventually decided to put together a paper and an installer to find out what other people might think of it. For those of you brave enough to try out this beast, I feel a little warning is in order: as it is the very very first proto release, there are still some extreme rough edges.  Some things aren't working completely and others simply aren't finished yet. Only 1 demo works fully, an other one almost. Things should improve rapidly over the next few weeks though, so bare with me.

Thursday, March 05, 2009 8:12:31 PM (Romance Standard Time, UTC+01:00)  #    Comments [0] -
AI | N²D | Personal
Categories
Archive
<March 2009>
SunMonTueWedThuFriSat
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234
Blogroll
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Jan Bogaerts
Sign In
Statistics
Total Posts: 10
This Year: 0
This Month: 0
This Week: 0
Comments: 3
Themes
Pick a theme:
All Content © 2010, Jan Bogaerts
DasBlog theme 'Business' created by Christoph De Baene (delarou)