Classificação de imagem semi-supervisionada com dados não rotulados
Publicados: 2022-03-11O aprendizado supervisionado tem estado na vanguarda da pesquisa em visão computacional e aprendizado profundo na última década.
Em uma configuração de aprendizado supervisionado, os humanos são obrigados a anotar uma grande quantidade de conjunto de dados manualmente. Em seguida, os modelos usam esses dados para aprender relacionamentos subjacentes complexos entre os dados e o rótulo e desenvolver a capacidade de prever o rótulo, de acordo com os dados. Os modelos de aprendizado profundo geralmente são famintos por dados e exigem enormes quantidades de conjuntos de dados para obter um bom desempenho. O hardware cada vez melhor e a disponibilidade de grandes conjuntos de dados rotulados por humanos têm sido a razão dos sucessos recentes do aprendizado profundo.
Uma grande desvantagem do aprendizado profundo supervisionado é que ele depende da presença de uma grande quantidade de conjuntos de dados rotulados por humanos para treinamento. Esse luxo não está disponível em todos os domínios, pois pode ser logisticamente difícil e muito caro obter grandes conjuntos de dados anotados por profissionais. Embora a aquisição de dados rotulados possa ser um empreendimento desafiador e caro, geralmente temos acesso a grandes quantidades de conjuntos de dados não rotulados, especialmente dados de imagem e texto. Portanto, precisamos encontrar uma maneira de explorar esses conjuntos de dados subutilizados e usá-los para aprender.
Transferir Aprendizagem de Modelos Pré-treinados
Na ausência de grandes quantidades de dados rotulados, geralmente recorremos ao uso do aprendizado de transferência . Então, o que é transferência de aprendizagem?
A transferência de aprendizagem significa usar o conhecimento de uma tarefa semelhante para resolver um problema em mãos. Na prática, geralmente significa usar como inicializações os pesos da rede neural profunda aprendidos de uma tarefa semelhante, em vez de começar com uma inicialização aleatória dos pesos e, em seguida, treinar ainda mais o modelo nos dados rotulados disponíveis para resolver a tarefa em questão.
O aprendizado de transferência nos permite treinar modelos em conjuntos de dados tão pequenos quanto alguns milhares de exemplos e pode oferecer um desempenho muito bom. O aprendizado de transferência de modelos pré-treinados pode ser realizado de três maneiras:
1. Extração de recursos
Normalmente, as últimas camadas da rede neural estão fazendo os cálculos mais abstratos e específicos da tarefa, que geralmente não são facilmente transferíveis para outras tarefas. Por outro lado, as camadas iniciais da rede aprendem alguns recursos básicos, como arestas e formas comuns, que são facilmente transferíveis entre as tarefas.
Os conjuntos de imagens abaixo descrevem o que os kernels de convolução em diferentes níveis em uma rede neural convolucional (CNN) estão essencialmente aprendendo. Vemos uma representação hierárquica, com as camadas iniciais aprendendo formas básicas e, progressivamente, as camadas superiores aprendendo conceitos semânticos mais complexos.
Uma prática comum é pegar um modelo pré-treinado em grandes conjuntos de dados de imagem rotulados (como ImageNet) e cortar as camadas totalmente conectadas no final. Novas camadas totalmente conectadas são então anexadas e configuradas de acordo com o número necessário de classes. As camadas transferidas são congeladas e as novas camadas são treinadas nos dados rotulados disponíveis para sua tarefa.
Nesta configuração, o modelo pré-treinado está sendo usado como um extrator de recursos, e as camadas totalmente conectadas no topo podem ser consideradas um classificador superficial. Essa configuração é mais robusta do que o overfitting, pois o número de parâmetros treináveis é relativamente pequeno, portanto, essa configuração funciona bem quando os dados rotulados disponíveis são muito escassos. O tamanho do conjunto de dados que se qualifica como um conjunto de dados muito pequeno geralmente é um problema complicado com muitos aspectos a serem considerados, incluindo o problema em questão e o tamanho do backbone do modelo. Grosso modo, eu usaria essa estratégia para um conjunto de dados composto por alguns milhares de imagens.
2. Ajuste fino
Alternativamente, podemos transferir as camadas de uma rede pré-treinada e treinar toda a rede nos dados rotulados disponíveis. Essa configuração precisa de um pouco mais de dados rotulados porque você está treinando toda a rede e, portanto, um grande número de parâmetros. Essa configuração é mais propensa a overfitting quando há escassez de dados.
3. Aprendizagem por Transferência em Duas Etapas
Essa abordagem é a minha favorita e geralmente produz os melhores resultados, pelo menos na minha experiência. Aqui, treinamos as camadas recém-anexadas enquanto congelamos as camadas transferidas por algumas épocas antes de ajustar toda a rede.
O ajuste fino de toda a rede sem dar algumas épocas às camadas finais pode resultar na propagação de gradientes prejudiciais de camadas inicializadas aleatoriamente para a rede base. Além disso, o ajuste fino requer uma taxa de aprendizado comparativamente menor, e uma abordagem de dois estágios é uma solução conveniente para isso.
A necessidade de métodos semi-supervisionados e não supervisionados
Isso geralmente funciona muito bem para a maioria das tarefas de classificação de imagens porque temos grandes conjuntos de dados de imagens, como o ImageNet, que cobrem uma boa parte do espaço de imagem possível - e, geralmente, os pesos aprendidos são transferíveis para tarefas de classificação de imagens personalizadas. Além disso, as redes pré-treinadas estão prontamente disponíveis na prateleira, facilitando assim o processo.
No entanto, essa abordagem não funcionará bem se a distribuição de imagens em sua tarefa for drasticamente diferente das imagens nas quais a rede base foi treinada. Por exemplo, se você estiver lidando com imagens em escala de cinza geradas por um dispositivo de imagem médica, a transferência de aprendizado de pesos ImageNet não será tão eficaz e você precisará de mais de alguns milhares de imagens rotuladas para treinar sua rede para um desempenho satisfatório.
Por outro lado, você pode ter acesso a grandes quantidades de conjuntos de dados não rotulados para o seu problema. É por isso que a capacidade de aprender com conjuntos de dados não rotulados é crucial. Além disso, o conjunto de dados não rotulado geralmente é muito maior em variedade e volume do que os maiores conjuntos de dados rotulados.
As abordagens semi-supervisionadas mostraram um desempenho superior às abordagens supervisionadas em grandes benchmarks como o ImageNet. A famosa analogia do bolo de Yann LeCun enfatiza a importância do aprendizado não supervisionado:
Aprendizagem semi-supervisionada
Essa abordagem aproveita dados rotulados e não rotulados para aprendizado, por isso é denominado aprendizado semi-supervisionado. Essa geralmente é a abordagem preferida quando você tem uma pequena quantidade de dados rotulados e uma grande quantidade de dados não rotulados. Existem técnicas em que você aprende com dados rotulados e não rotulados simultaneamente, mas discutiremos o problema no contexto de uma abordagem de dois estágios: aprendizado não supervisionado em dados não rotulados e aprendizado de transferência usando uma das estratégias descritas acima para resolver sua tarefa de classificação .
Nesses casos, aprendizado não supervisionado é um termo bastante confuso. Essas abordagens não são realmente não supervisionadas no sentido de que há um sinal de supervisão que orienta o aprendizado dos pesos, mas, portanto, o sinal de supervisão é derivado dos próprios dados. Por isso, às vezes é chamado de aprendizado autossupervisionado, mas esses termos têm sido usados de forma intercambiável na literatura para se referir à mesma abordagem.

As principais técnicas de aprendizado autossupervisionado podem ser divididas pela forma como geram esse sinal de supervisão a partir dos dados, conforme discutido abaixo.
Métodos Geradores
Os métodos generativos visam a reconstrução precisa dos dados após passá-los por um gargalo. Um exemplo dessas redes são os autoencoders. Eles reduzem a entrada em um espaço de representação de baixa dimensão usando uma rede codificadora e reconstroem a imagem usando a rede decodificadora.
Nesta configuração, a própria entrada torna-se o sinal de supervisão (rótulo) para treinamento da rede. A rede do codificador pode então ser extraída e usada como ponto de partida para construir seu classificador, usando uma das técnicas de aprendizado de transferência discutidas na seção acima.
Da mesma forma, outra forma de redes generativas - Generative Adversarial Networks (GANs) - pode ser usada para pré-treinamento em dados não rotulados. Então, um discriminador pode ser adotado e ajustado para a tarefa de classificação.
Métodos discriminativos
Abordagens discriminativas treinam uma rede neural para aprender uma tarefa de classificação auxiliar. Uma tarefa auxiliar é escolhida de forma que o sinal de supervisão possa ser derivado dos próprios dados, sem anotação humana.
Exemplos desse tipo de tarefa são aprender as posições relativas de patches de imagem, colorir imagens em tons de cinza ou aprender as transformações geométricas aplicadas nas imagens. Discutiremos dois deles com mais detalhes.
Aprendendo Posições Relativas de Patches de Imagem
Nesta técnica, trechos de imagem são extraídos da imagem de origem para formar uma grade semelhante a um quebra-cabeça. As posições do caminho são embaralhadas e a entrada embaralhada é alimentada na rede, que é treinada para prever corretamente a localização de cada patch na grade. Assim, o sinal de supervisão é a posição real de cada caminho na rede.
Ao aprender a fazer isso, a rede aprende a estrutura relativa e a orientação dos objetos, bem como a continuidade dos recursos visuais de baixo nível, como a cor. Os resultados mostram que os recursos aprendidos ao resolver esse quebra-cabeça são altamente transferíveis para tarefas como classificação de imagens e detecção de objetos.
Aprendendo Transformações Geométricas Aplicadas a Imagens
Essas abordagens aplicam um pequeno conjunto de transformações geométricas às imagens de entrada e treinam um classificador para prever a transformação aplicada observando apenas a imagem transformada. Um exemplo dessas abordagens é aplicar uma rotação 2D às imagens não rotuladas para obter um conjunto de imagens giradas e, em seguida, treinar a rede para prever a rotação de cada imagem.
Este simples sinal de supervisão força a rede a aprender a localizar os objetos em uma imagem e entender sua orientação. Os recursos aprendidos por essas abordagens provaram ser altamente transferíveis e produzir desempenho de última geração para tarefas de classificação em ambientes semi-supervisionados.
Abordagens baseadas em similaridade
Essas abordagens projetam as imagens em um espaço de representação de tamanho fixo, onde imagens semelhantes estão mais próximas e imagens diferentes estão mais distantes. Uma maneira de conseguir isso é usar redes siamesas baseadas na perda de tripletos, que minimiza a distância entre imagens semanticamente semelhantes. A perda de tripleto precisa de uma âncora, um exemplo positivo e um exemplo negativo e tenta aproximar o positivo da âncora do que o negativo em termos de distância euclidiana no espaço latente. Âncora e positivo são da mesma classe, e o exemplo negativo é escolhido aleatoriamente das demais classes.
Em dados não rotulados, precisamos criar uma estratégia para produzir esse trio de exemplos âncoras positivos e negativos sem conhecer as classes de imagens. Uma maneira de fazer isso é usar uma transformação afim aleatória da imagem âncora como um exemplo positivo e selecionar aleatoriamente outra imagem como um exemplo negativo.
Experimentar
Nesta seção, relatarei um experimento que estabelece empiricamente o potencial do pré-treinamento não supervisionado para classificação de imagens. Este foi o meu projeto semestral para uma aula de Deep Learning que fiz com Yann LeCun na NYU na primavera passada.
- Conjunto de dados . É composto por 128 mil exemplos rotulados, metade dos quais são para treinamento e a outra metade para validação. Além disso, fornecemos 512 mil imagens sem rótulo. Os dados contêm 1.000 classes no total.
- Pré-treinamento não supervisionado . AlexNet foi treinado para classificação de rotação usando aumento extensivo de dados por 63 épocas. Usamos os hiperparâmetros documentados pela Rotnet em seu artigo.
- Treinamento do classificador . Os recursos foram extraídos da quarta camada de convolução e três camadas totalmente conectadas foram anexadas a ela. Essas camadas foram inicializadas aleatoriamente e treinadas com uma taxa de aprendizado decrescente programada, e a parada antecipada foi implementada para interromper o treinamento.
- Ajuste fino de toda a rede . Eventualmente, ajustamos a rede treinada em todos os dados rotulados. Tanto o extrator de recursos quanto o classificador, que foram treinados separadamente antes, foram ajustados com uma pequena taxa de aprendizado por 15 épocas.
Treinamos sete modelos, cada um usando um número diferente de exemplos de treinamento rotulados por classe. Isso foi feito para entender como o tamanho dos dados de treinamento influencia o desempenho de nossa configuração semissupervisionada.
Conseguimos obter uma taxa de precisão de 82% para o pré-treinamento na classificação de rotação. Para o treinamento do classificador, os 5% de precisão superiores saturaram em torno do valor de 46,24%, e o ajuste fino de toda a rede rendeu o valor final de 50,17%. Aproveitando o pré-treinamento, obtivemos um desempenho melhor do que o treinamento supervisionado, que dá 40% de acertos no top 5.
Como esperado, a precisão da validação diminui com a diminuição dos dados de treinamento rotulados. No entanto, a diminuição no desempenho não é tão significativa quanto se esperaria em um ambiente supervisionado. Uma redução de 50% nos dados de treinamento de 64 exemplos por classe para 32 exemplos por classe resulta apenas em uma redução de 15% na precisão da validação.
Usando apenas 32 exemplos por aula, nosso modelo semissupervisionado alcança desempenho superior ao modelo supervisionado treinado com 64 exemplos por aula. Isso fornece evidências empíricas do potencial de abordagens semi-supervisionadas para classificação de imagens em conjuntos de dados rotulados de poucos recursos.
Empacotando
Podemos concluir que o aprendizado não supervisionado é um paradigma poderoso que tem a capacidade de aumentar o desempenho para conjuntos de dados de poucos recursos. O aprendizado não supervisionado está atualmente em sua infância, mas gradualmente expandirá sua participação no espaço de visão computacional, permitindo o aprendizado a partir de dados não rotulados baratos e facilmente acessíveis.
Leitura adicional no Blog da Toptal Engineering:
- Gráficos de ciência de dados com Python/NetworkX