This was a post to the Open Manufacturing list
—–
This post is a bit long, but I’m going somewhere with it, please bear
with me 🙂
Also, I assume before I start that this idea already exists, because
they always do. I’m sure Bryan will know who’s already doing it, if
anyone.
—
I’m trying to learn a bunch of new things at the moment.
One example: as some noted elsewhere, I’ve got some audio stuff in one
of my blogs. A project for the coming year for me is to learn digital
audio signal processing in some detail, enough to be usefully able to
contribute.
Now just being able to write that sentence has been some months in
coming. This is because, when I first knew that I wanted to learn
about digital audio signal processing, I didn’t know that it was
called digital audio signal processing.
What I knew was that I’d like to know the theory required for writing
plugins for digital audio workstations.
If I had a background in engineering, I would have immediately known
this, because I’d have studied digital signal processing, core stuff
in engineering. But I’m a compsci guy, never heard of it.
I went in the wrong direction to start with. My wife was doing some
study in electronic music at the local music conservatorium. I went to
chat to the most technical lecturer there about it, but he didn’t
really know much about it. They know lots about wiring up pre-built
“plugins” in all kinds of crazy ways, and about using standard
“plugins” to their full potential, all good stuff. But the plugins
themselves, they come down from the plugin gods. btw I don’t mean this
to be critical; these people do what they do extremely well, and have
deep knowledge of their own. But it’s about music and professional
sound design, not hardcore coding or maths. It’s like I went to the
professional graphics people to find out how to build a graphics
engine; not what they do.
By chance, a job came up at work to extend a package for modeling
acoustic properties in buildings. The package purely works with
numbers, but people thought it’d be nice to actually hear what the
model sounds like, in a preview kind of way. So, I chatted with an
engineer colleague, and voila! Digital Audio Signal Processing! The
incantation revealed.
So I found myself a book on digital audio signal processing. And
discovered that it requires knowlege of digital signal processing (a
more generic area).
So I found myself a book on digital signal processing, and a bit of
the way in realised that I need a working understanding of electronics
to take in a lot of the content (although I might be able to finesse
that).
I’ve gained some traction, and am making some ground on the area now.
But my point is that it took me a long time to figure out how to learn
what I wanted to learn, probably as long (although more porous 🙂 )
as it will take to do the initial learning.
—
Next example: Coding in a linux environment.
I’ve jumped headfirst into the linux world, backed only by a compsci
degree (which helps) and a decade and a half of commercial Windows
work (which helps less).
Again, I’m aware that I don’t even know how to phrase or even form
many of the questions that I need to ask. The phase I am in is one of
trying to discover enough structure to begin to feel the bounds of the
scope of my own ignorance.
So far, I’ve figured out that I need to brush up some languages I once
knew, and add some new ones. You communicate largely in code in this
world. I’m currently reading “Dive into Python”, and I’ve got pydev
going in eclipse, and I’ve been playing with little programs. (Cool
language! Dynamic types upset me a little, feels like the bad old
days, but there are so many other great things, and a method to the
madness, so I’m happy to persevere. But I digress.)
That’s all cool. But the point here is that, even in an area in which
I have formal training and experience, I can still end up in
unfamiliar territory and be grasping around for how to find the way.
—
What’s characteristic in both these examples is that my google-fu has
failed me, for a very good reason. I am in the territory of deep
learning.
Google is awesome when you need to know something specific. For a
commercial software developer, the job is mostly about that, so I’m
familiar with it. But there’s an invisible line in knowledge
complexity that you avoid in that style of learning. It’s always about
finding out just enough to do the job, but not enough to slow you
down, or confuse you, or to require you to pick up novel patterns of
thought.
I find that when you cross the invisible line, the internet can be
quite frustrating. It’s clear that all the information you need is
there, but it feels inaccessible, because everything is either too
superficial to be useful, or assumes background knowledge that you not
only don’t have but can’t know that you need.
The traditional route to go down for deep learning is the education
system. Some level of course or courses at some level of
sophistication will teach you what you need. Eg: I could do an
engineering degree, then steer into postgrad work in digital audio
signal processing. Or, I could find the right institution to do more
computing study, specifically based in linux culture. This has serious
drawbacks though. It’s a just-in-case model. I want to learn something
relatively specific, but it’s hard to get at that in the traditional
educational context without having to do a vast amount of other stuff
that I just don’t really need and don’t care about. Very costly in
terms of time, money and attention, and I’m likely to get bored and
stop anyway because of too much irrelevance.
Or, I can fumble along as I have, trying to self educate, but this
really does become difficult as complexity increases. There’s a reason
why people mostly stick to what they already know, after all!
There must be a better way.
—
So in my travels, I stumbled upon this list, and in particular Bryan’s
ongoing published thoughts about how to document manufacturing
processes in a precise manner, with respect to such things as inputs,
outputs, required tools, maintenance requirements etc etc.
Dependencies, generally speaking.
And it has occurred to me that you could apply the same approach to
deep learning.
It should be possible to categorise any chunk of knowledge as a set of
alternative recipes for acquiring it, including dependencies.
Eg:
<knowledge id="eng_dasp" desc="Digital Audio Signal Processing"> <recipe> <steps> Tertiary Course X <course description, url(s)> </steps> </recipe> <recipe> <steps> Tertiary Course Y <course description, url(s)> </steps> <tools> Textbooks A, B, C <urls> </tools> </recipe> <recipe> <steps> Online course Z </steps> </recipe> <dependencies> <knowledge id="eng_dsp"> </dependencies> </knowledge> <knowledge id="eng_dsp" desc="Digital Signal Processing"> <recipe> <steps> Tertiary Course N <course description, url(s)> </steps> <tools> Textbooks P, Q <urls> </tools> </recipe> <recipe> ... </recipe> <dependencies> <knowledge id="eng_electronics"> </dependencies> </knowledge>
etc
It looks a lot like what Bryan’s been talking about with recipes in
open manufacturing. In particular, acquiring knowledge can be modeled
as a process, just like a process for making something. (In fact, it
could be integrated. After all, in many places in the manufacturing
models, the people involved are required to have certain knowledge,
why not model the knowledge chunks required in detail?)
So I think then, imagine an online service where you can explore these
recipes for learning, explore the larger graph, piece together your
own just-in-time curriculum from the parts available, or add new
recipes and maintain existing ones. Existing tertiary courses, open
course materials, text books, websites, all kinds of material could be
integrated into a usable whole via this approach.
Something like this could eventually turn the university system inside
out, allowing students to come for the specific pieces they want as
they want them, rather than having to take on the giant chunks that
are currently the norm.