-
Deep Learning é muito
guloso por dados, ou seja,
-
ele exige uma base de dados grande
para poder treinar os modelos.
-
Agora, nem sempre nós temos
muitos dados a disposição
-
para treinar o modelo
de classificação, por exemplo.
-
Claro que, no caso
de uma rede geral
-
que verifica se uma imagem
tem um gato, um cachorro,
-
um passarinho ou um piano,
é muito simples,
-
é fácil você conseguir
dados da internet
-
para compor uma base
grande desse tipo de dado.
-
Agora, em aplicações mais
específicas como imagens médicas,
-
nem sempre podemos garantir
a existência desses dados.
-
Quando nós não
temos disponíveis,
-
a primeira alternativa é
tentar buscar novos dados,
-
por exemplo, coletando
novas imagens.
-
Novamente, em um caso geral,
a coleta de dados é mais fácil,
-
no entanto, em casos específicos
e domínios muito particulares,
-
você conquistar uma nova imagem,
um novo caso daquele exemplo
-
pode ser mais difícil.
-
Portanto, podemos lançar mão
de três estratégias principais.
-
A primeira estratégia é
o data augmentation,
-
ou seja, o aumento
artificial desses dados.
-
Cada linha representa uma imagem
de lesão de pele original, ou seja,
-
é uma lesão real, coletada
de um caso verídico.
-
Cada coluna possui
essa mesma imagem
-
com alguma perturbação artificial
feita por processamento de imagem.
-
Podemos ter maior
zoom, menor zoom,
-
aumentar o brilho,
diminuir o brilho,
-
aumentar o contraste,
fazer uma rotação,
-
remover partes
da imagem também,
-
combinar essas características
e assim sucessivamente.
-
Podemos ter essas mesmas operações
para cada uma das imagens.
-
Então, em cada um desses
exemplos de entrada,
-
podemos fazer n
perturbações diferentes.
-
A principal vantagem
do data augmentation
-
é que, a partir de uma única
imagem de entrada,
-
nós conseguimos produzir
n cópias diferentes,
-
é um dado diferente, não
é bem a mesma imagem,
-
mas são cópias que representam
aquele mesmo conceito.
-
Ou seja, eu posso fazer perturbações
leves na imagem de um gato
-
e aquela imagem resultante
também continua sendo um gato.
-
Outro aumento interessante
é utilizar uma GAN
-
para gerar dados artificiais
-
que representam aquele
mesmo dado de entrada.
-
Por exemplo, eu posso pegar
imagens reais de lesão de pele
-
e ensinar uma GAN a reproduzir
essa imagem artificialmente,
-
gerando imagens falsas,
que não são reais,
-
mas que representam
com grande precisão
-
as características
de uma lesão de pele real,
-
por exemplo, as que foram
geradas na próxima imagem.
-
Todas essas imagens parecem
imagens reais de lesão de pele,
-
parecem, de fato, um caso
de um ser humano
-
que foi documentado
por um dermatologista.
-
Mas, na verdade, essas
imagens são imagens falsas.
-
A rede neural artificial
profunda do tipo GAN
-
aprendeu a imitar as características
desse tipo de imagem
-
e gerou essas imagens artificiais
para imitar uma imagem real.
-
Note o grau de precisão
em trazer pelos
-
ou essa reguinha que mede
o tamanho da lesão na vida real.
-
Essa geração
de dados é tão boa
-
que pode até confundir
um ser humano
-
para distinguir se a imagem
é real ou falsa.
-
Essa é uma forma
artificial de aumentar
-
a quantidade de dados disponível
para treinar as suas redes.
-
E a terceira estratégia é trabalhar
com transfer learning e fine-tuning.
-
Isso aqui é uma técnica
bem interessante
-
no trabalho com qualquer
tipo de rede neural,
-
porque isso permite fazer
a transferência de conhecimento
-
ou, então, o ajuste fino
desse aprendizado.
-
Como ele funciona?
-
Nós partimos de uma rede neural
artificial profunda treinada do zero
-
e um conjunto de dados
muito grande,
-
e pode ser, até mesmo,
uma imagem generalista,
-
distinguir se uma imagem
é um passarinho, uma flor,
-
uma árvore, um instrumento
musical e outras coisas.
-
Nós utilizamos
milhões de imagens
-
para treinar, do zero,
uma rede neural profunda
-
que classifica qual tipo de objeto
está presente nessa imagem.
-
Quando a rede está treinada,
o treinamento chega ao fim,
-
todos os pesos de cada
camada já estão no lugar.
-
Nós podemos fazer uma transferência
de conhecimento, ou seja,
-
o transfer learning.
-
Nós copiamos essa arquitetura
para uma outra rede, ou seja,
-
copiamos a arquitetura,
a quantidade de camadas,
-
como elas são encadeadas
-
e também os pesos já
treinados para extrair features.
-
E utilizamos uma leve
alteração na última camada
-
que é a camada de decisão.
-
Aqui no caso, estou partindo
de uma característica geral,
-
de uma base de dados
geral bem grande,
-
para aprender a distinguir
se uma lesão de pele
-
é câncer de pele ou não,
se é um melanoma ou não é,
-
ou seja, a minha rede
neural artificial
-
não está aprendendo a extrair
features desses dados,
-
eu uso a rede já treinada
como extrator de features padrão
-
para distinguir features
relevantes dessas imagens.
-
Aí, eu vou aprender,
na camada de decisão,
-
como essas features
são relacionadas
-
com câncer de pele
ou lesão benigna.
-
O transfer learning é essencialmente
como nós aprendemos uma coisa nova.
-
Nós nunca aprendemos
algo do zero sempre,
-
o nosso cérebro está
tentando fazer associação
-
com algo que nós já conhecemos
que é parecido ou diferente
-
de algo que estamos
vendo pela primeira vez.
-
Ou seja, estamos aprendendo
por uma transferência
-
de conhecimento
de um domínio para o outro.
-
O transfer learning
por si só
-
é justamente essa transferência
de conhecimento,
-
transferir os pesos aprendidos
de uma rede, em um domínio,
-
em um novo domínio.
-
Nós podemos refinar um pouquinho
mais esse aprendizado
-
com o fine-tuning,
que é o ajuste fino.
-
Ou seja, além
de deixar o dado,
-
os pesos copiados
de uma tarefa para outra,
-
podemos permitir que,
em tempo de treinamento,
-
esses pesos sejam
levemente alterados,
-
levemente ajustados
à tarefa de destino.
-
E isso melhora ainda mais
a precisão da classificação.