top of page
Search
  • johnmcgaughey255

Tweaking the black box

The convolutional neural network's task is to learn kernel convolutions of some image in order to build up abstracted patterns according to the training data, and through layers of abstraction. The first layer, recognizing patterns and edges, and as we progressively move through the layers there comes higher level features, like eyes or dogs or pandas. What we need to understand though, is that every layer of physical abstraction brought about throughout the neural layers, is a consequence of building a network who's sole purpose is to identify images. This machine is not intelligent, it is a beautifully designed machine, but it is not intelligent, and we need to remember this when we are working with them. Everything that happens inside of the network, all of the weights and biases adjustments are computed based on the negative gradient of the loss function at the final layer, the layer of classification. This way, we have assigned the importance to the final layer over other layers, how we label and sort the images together before hand has a huge impact on how the machine builds its structure around it. Us engineers and data scientists training machine learning models must understand that the machine will learn an approximate function that approximates how WE sort them and define them, not necessarily indicative of their true nature. Let us say for an example that we want to build a DL model to distinguish species from each other. We want to translate everything that we know about how species interrelate to the machine, for example we may want them to know how closely related species are to each other, and therefore, how it effects their physical appearance in relation to each other.

We define the last layer of neurons for what reason? It is because we believe we know how to label it. All deep learning (unsupervised, supervised, reinforcement) is supervised, because we are providing some context for what is right and what is wrong. If it is computing the gradient, based on the cost function of the last neural layer, then that necessarily means that there is some indication of what is right or wrong. In supervised learning it is quite simple; there is often one correct answer or label, like 'fish' and this corresponds to a fish. It is a bit more complicated when we are thinking about unsupervised learning, but the model is still receiving feedback. So back to the question starting this paragraph: We define the last layer of neurons for what reason? It is because we do not know how to label subsequent layers. There is not necessarily one proper way to form an abstraction of what a fish is. We cannot say what is right or wrong in these layers, we have no direction. We cannot preform a gradient on subsequent weights and activation biases from something that we cannot define, so we trust that there is enough information in the last layer to do so.

I propose that it is in fact possible to alter the structure of a convolutional neural network. For what purpose? I am not entirely sure. Will it improve the functionality of the classifier? I am not sure at all, my guess would be not. If we can visualize what is happening on these layers by preforming a maximization function on the layer or neuron we want to look at to examine what is happening, can we change it to our will. Maybe we do not have an exact idea about what neurons in a low layer should represent exactly... but maybe we could instill some idea of abstraction into an entire layer. At the center of this idea, we want to be able to build our own abstractions that are not according to the final layer of the network. We want an external model that the model is based off of. Do not be mistaken, we still want this to act as a classifier, and the end goal is still to improve the functionality of the classifier. The fundamental problem surrounding all of DL, is that the highest truth that the network experiences is the loss function, there aren't any external models. We as humans, whether we want to see it, whether we feel it or not, operate somewhat according to a larger truth than we can know. God through evolution, the scientific idea is not big enough to answer the question of why we think like we do, and the religious idea is not applicable to physical things of the world. So we approximate it with how we think the world works, or I do at least. I believe all of our ideas and abstractions of things start in some chaos and build to order through the layers of abstractions. This is assuming we are some sort of classifier or what? I mean... we try to guess at 1) how the world works 2) how people work 3)how we work 4) What certain things are and how they move... there are really countless examples. How would we get a machine to think this way though? I believe it is possible, in the training of a classifier to instill wanted representations of abstracted ideas. We must start in the base layer of the network in order to build off that. Deep dream is an algorithm created by google with the intent to visualize what abstractions through an over processed image. Another popular idea in DL is the structure of a generative adversarial network. Together, I propose the Deep-GAN. We use the dream algorithm to dream (generate) an image representative of a layer, then we use the GAN to change the meaning of that layer in the context of the rest of the classifier. When we train a classifier normally, the model has a lot of freedom to design layers as it sees most optimal, but I believe that it can still work well if we take away some of that freedom to design the layers. Going from chaos to order always meant for me zooming out in a dynamical system... for example, in a small scale looking at the motion of a river, we see turbulence and chaos, but as we zoom out we start to realize that its part of a larger process.

If we believe our brain is of similar architecture to that of a neural network, we can say that we build up abstractions through neural layers of our ideas of things. If we can infer on how the brain processes information from the ground up, through abstractions, we can get some level of understanding through programming a classifier accordingly using dream-GAN.

3 views0 comments

Recent Posts

See All

Meta-heuristic optimization

These are all drafts, by the way. They are not meant to be perfect or to convey all the information I wish to convey flawlessly. My blogs are just a way for me to get ideas and my thoughts realized as

Dimensionality reduction and model interpretability

I would say that the main purpose of communication is to give a universal understanding of abstract ideas. An abstraction is, for my intents and purposes, a lower dimensional encoding of a higher dime

bottom of page