Você está na página 1de 12

UniversidadeFederaldeSantaCatarina

PsGraduaoemEngenhariadeAutomaoeSistemas

TrabalhoIIDeepLearningaplicadonoMatlab

AlanadeMeloeSouza
EduardoJorgedaRosaBrgel

1. DesenvolvimentonoMatLab
Efetuamos o treinamento de uma rede neural profunda por classificao de dgitos.
Este exemplo mostra como usar a Rede Neural Toolbox para treinar um Rede neural
profundaparaclassificarimagensdedgitos.
As redes neurais com mltiplas camadas ocultas pode ser teis para resolver
problemas de classificao com dados complexos, como imagens. Cada camada pode
aprender caractersticas em um nvel diferente de abstrao. No entanto, a formao de
redes neurais com mltiplas camadas ocultas pode ser difcil na prtica. Uma maneira de
efetivamente treinar uma rede neural com camadas mltiplas de formar uma camada de
cada vez. possvel conseguir isto atravs da formao de um tipo especial de rede
conhecidacomautoencoderparacadacamadaocultadesejada.
Este exemplo mostraremos como treinar uma rede neural com duas camadas
escondidas para classificar dgitos em imagens. Primeiro treinaremos as camadas ocultas
individualmentedeformanosupervisionadausandoautoencoders.
OprimeiroautoencoderfoiumNeocognitronFukushima.


Fig.021Autoencoder.Fonte:https://www.mql5.com/pt/articles/1103#1_2_3

A finalidade de um auto associador para receber na sada a imagem mais precisa


da entrada quanto possvel. Um autoencoder uma rede neural com uma camada aberta.
Usando o algoritmo de aprendizado no supervisionado earetropropagao, eledefineum
valorobjetivoigualaovetordeentrada,ouseja,y=x.

Fig.03Autoencoder.Fonte:
https://www.mql5.com/pt/articles/1103#1_2_3


Ele encontra uma aproximao de uma funo, assegurando que um feedback da
rede neural aproximadamente igualaosvaloresdosparmetrosdeentrada.Paraasoluo
do problema ser notrivial, o nmero de neurnios na camada aberta deve ser menor do
queadimensodosdadosdeentrada(comonaimagem).
Ento formaremos uma camada softmax final, e uniremos as camadas em conjunto
para formar um rede profunda, o que treinado pela ltima vez em uma forma
supervisionada.

A Equao, onde x o vetor de entrada, apresenta uma transformao exponencial


normalizada. A camada softmax produz estimativas positivas cuja soma e igual a um, que
sointerpretadascomoprobabilidades.

Fig.04FunoSoftmax.Fonte:
https://www.mql5.com/pt/articles/1103#1_2_3

Redes neurais supervisionadas que usam uma funo de custo de erro mdio
quadrtico podem usar mtodos estatsticosformaisparadeterminaraconfianadomodelo
treinado.
O erro mdio quadrtico em um conjunto de validao pode ser usado como uma
estimativa para variao. Este valor pode ento ser usado para calcular o intervalo de
confianadeumasadanaredeneural,assumindoadistribuionormal.
A anlise da confiana feita desta maneira estatisticamente vlida enquanto a
distribuioprobabilsticadasadasemantiveramesmaearedeneuralnomodificar.
Assumindo a funo de ativao softmax nacamadadesadada redeparavariveis
categricas alvos, a sada pode ser interpretada como probabilidades posteriores. Isso
muitotilnaclassificao,poisdumamedidadecertezasobreasclassificaes.


1.1Objetivo
Treinarumaredeneuralprofundaparaclassificarimagensdedgitos.

1.2Conjuntodedados
Este exemplo usa dados sintticos, para a formao e testes. As imagens sintticas
foram geradas aleatoriamente a partir de dgitos usando dediferentesfontes.Cadaimagem
dgitotemtamanhode28x28pixels,eh5.000exemplosdetreinamento.

Fig.5Dgitosdefontesdiferentes.Fonte:Matlab.

Cada imagem armazenada em uma matriz de 10 por 5000, onde, em cada coluna
de um nico elemento ser de 1 para indicar a classe que o dgito pertence, e todos os
outros elementos da coluna ser 0. Deve notarse que se o dcimo elemento 1, ento a
imagemdedgitoumzero.

1.3

Treinandooprimeiroautoencoder
Um autoencoder uma rede neural, que tenta reproduzir a sua entrada sua sada.
Assim, o tamanho da sua entrada ser o mesmo que o tamanho da sua sada. Quando o
nmero de neurnios na camada escondida menor do que o tamanho da entrada, o
autoencoderaprendeumarepresentaocomprimidadaentrada.Asredesneuraistmpesos

aleatoriamente inicializados antes do treino. Portanto, os resultados do treinamento so


diferentes a cada vez. Para evitar esse comportamento, definido um gerador de nmero
aleatrio,
RNG (
'default').
Defina o tamanho da camada oculta para o autoencoder, umaboaideiaparafazer
estemenorqueotamanhodeentrada,hiddensize1=100
O autoencoder constitudo por um codificador, seguido por um descodificador.O
codificador mapeia uma entrada para uma representao oculta, e o descodificador tenta
reverterestemapeamentoparareconstruiraentradaoriginal.

Fig.061Autoencoder.Fonte:Matlab.

1.4Avisualizaodospesosdaprimeiraautoencoder
O mapeamento aprendido pela parte de um codificador autoencoder pode ser til para a
extrao de caractersticas a partirdedados.Cadaneurnionocodificadortemumvetorde
pesosassociadoscomelequevaiserajustadopararesponderaumefeitovisualespecial.

Fig.07Ajustesdo1Autoencoder.Fonte:Matlab.

possvel verqueascaractersticasaprendidaspeloautoencoderpelarepresentao
de traados a partir das imagens dgitos. A sada dimensional da camada escondida do
autoencoder uma verso compacta da entrada, que resume sua resposta s caractersticas
visualizadas acima.O prximo passo treinar autoencoder com o conjunto desses vetores
extrados.Usamosocodificadordoautoencodertreinadosparagerarosrecursos.

1.5Treinandoosegundoautoencoder
Depois de treinar o primeiro autoencoder,treinamososegundoautoencoderdeuma
maneira similar. A principal diferena que voc usa os recursos que foram gerados a
partir da primeira autoencoder como os dados de treinamento na segunda autoencoder.
Alm disso, diminumos o tamanho da representao oculta a 50, de modo que o
codificador do segundo autoencoder aprende uma representao ainda menordosdadosde
entrada.

Fig.082Autoencoder.Fonte:Matlab.

Os vetores originais nos dados de treinamento teve 784dimenses.Apspassagem


atravs do primeiro codificador, este foi reduzido para 100 dimenses. Depois de usar o
segundo codificador, este foi reduzida novamente para 50 dimenses. Agora voc pode
treinar uma camada final declassificaressesvetores de50dimensesemdiferentesclasses
dgitos.

1.6Treinandoacamadafinaldesoftmax
Treinar uma camada softmax para classificar os vetores de 50 dimenses.Ao
contrrio dos autoencoders, voc treina a camada softmax deformasupervisionadausando
etiquetasparaosdadosdetreinamento.

Fig.09CamadaSoftmax.Fonte:Matlab.

1.7Formandoaredeneural
Treinamostrscomponentesseparadosdeumaredeneuralprofundaem isolamento.
Neste ponto, pode ser til para ver as trs redes neurais que voc treinou. Eles so
autoenc1,autoenc2,eSoftnet.

Fig.11Astrscamadas.Fonte:Matlab.

Tal comofoiexplicado,oscodificadoresdasautoencodersforamusadasparaextrair
caractersticas. Podemos empilhar os codificadores dos autoencoders juntamente com a
camada softmax para formar uma rede de profundidade, com o comando Deepnet = pilha
(autoenc1,autoenc2,softnet).


Fig.12RedeNeuralprofunda.Fonte:Matlab.

Com a rede formada, podemoscalcularosresultadosnoconjuntodeteste.Parausar


imagens com as 3 redes, temosqueremodelarasimagensdetesteemumamatriz.Fizemos
isto empilhando as colunas de uma imagem para formar um vector, e, em seguida,
formandoumamatrizapartirdessesvetores,comoseguintecdigo:
%Obteronmerodepixelsemcadaimagem
ImageWidth=28
ImageHeight=28
inputSize=ImageWidth*ImageHeight%decargaasimagensdeteste
[xTestImages, tTest] = digittest_dataset% Vire as imagens de teste em vetores e
coloclosemumamatriz
XTest=zeros(inputSize,Numel(xTestImages))parai=1:Numel(xTestImages)
XTest(:,i)=xTestImages{i}(:)final

1.8Resultados
Podemos visualizar os resultados com uma matriz de confuso.Os nmeros no
quadroinferiordireitodamatrizmostraaprecisoglobal.


Fig.13Matrizconfusoantesdoajustefino.Fonte:Matlab.

1.8.1Oajustefinodaredeneuralprofunda
Os resultados pode ser melhorado atravsdarealizaodaretropropagaoemtoda
a rede multicamada.Este processo muitas vezes referido como ajuste fino. Vocafinara
rede por reciclagem sobre osdadosdeformaodeformasupervisionada.Masantestemos
que remodelar as imagens de treinamento em uma matriz, como foi feito para as imagens
deteste.
%Vireasimagensdetreinamentoemvetoresecoloclosemumamatriz
xTrain = zeros (inputSize, Numel (xTrainImages)) para i = 1: Numel
(xTrainImages)
xTrain(:,i)=xTrainImages{i}(:)final%Realizeajustefino
Deepnet=comboio(Deepnet,xTrain,tTrain)

6.8.2Segundoresultadocomajustefino
A matriz de confuso de uma hiptese h oferece uma medida efetiva domodelode
classificao, ao mostrar o nmero de classificaes corretas versus as classificaes pr
ditasparacadaclasse,sobreumconjuntodeexemplosT.
O nmerodeacertos,paracadaclasse,selocalizanadiagonalprincipalM(Ci,Ci)da
matriz. Os demais elementos M (Ci, Cj), para i j, representam erros na classificao. A
matriz de confuso de um classificador ideal possui todos esses elementos iguais a zero
umavezqueelenocometeerros.

Fig.14Matrizconfusocomajustefino.Fonte:Matlab.

7Concluso

Consideramos os resultados alcanados satisfatrios, de acordo com os objetivos

inicialmentepropostos.
De incio foi apresentada uma introduo sobre uma rede de aprendizagem
profunda, seus principais conceitos, definies, sua arquitetura e aplicaes. Aps isto foi
descrito o mtodo de implementao no Matlab, e quais estruturas seguimos para o
funcionamentodarede.
De posse de toda a fundamentao terica necessria foi simulada a rede de
aprendizagem profunda, utilizando a ferramenta Toolbox no MATLAB, alm de formular
uma breve anlise dos resultadosobtidos.Vimosque estesoftwareumaferramentamuito
til para o ambiente acadmico e extremamente valioso no que tange anlise de redes
neuraisartificias.

8Referncias

BENGIO, Y. GOODFELLOW,I.J.COURVILLE,A.
DeepLearning:AnMITPress book
inpreparation,2015.

DENG, L. YU, D.
Deep Learning: Methods and Applications.FoundationsandTrendsin
SignalProcessing,
2014.

LECUNY.BENGIOY.HINTONG.
DeepLearning.
Nature,V.521,2015.

BEALE, M. H HAGAN, M. T. DEMUTH, H. B.


Neural Network Toolbox Tutorial,
Matlab,
2015
.
Disponvel em: <
https://www.mathworks.com/help/pdf_doc/nnet/nnet_ug.pdf
>.
Acessoem08desetembrode2015.