IA 101
O que é Aprendizado de Transferência?

O que é Aprendizado de Transferência?
Quando se pratica aprendizado de máquina, treinar um modelo pode levar muito tempo. Criar uma arquitetura de modelo do zero, treinar o modelo e, em seguida, ajustar o modelo é uma quantidade massive de tempo e esforço. Uma forma muito mais eficiente de treinar um modelo de aprendizado de máquina é usar uma arquitetura que já foi definida, potencialmente com pesos que já foram calculados. Essa é a principal ideia por trás do aprendizado de transferência, pegar um modelo que já foi usado e reutilizá-lo para uma nova tarefa.
Antes de mergulhar nas diferentes maneiras pelas quais o aprendizado de transferência pode ser usado, vamos tomar um momento para entender por que o aprendizado de transferência é uma técnica tão poderosa e útil.
Resolvendo um Problema de Aprendizado Profundo
Quando você está tentando resolver um problema de aprendizado profundo, como construir um classificador de imagens, você precisa criar uma arquitetura de modelo e, em seguida, treinar o modelo em seus dados. Treinar o classificador do modelo envolve ajustar os pesos da rede, um processo que pode levar horas ou até dias, dependendo da complexidade tanto do modelo quanto do conjunto de dados. O tempo de treinamento será escalonado de acordo com o tamanho do conjunto de dados e a complexidade da arquitetura do modelo.
Se o modelo não atingir o tipo de precisão necessário para a tarefa, ajustes no modelo provavelmente precisarão ser feitos e, em seguida, o modelo precisará ser retreinado. Isso significa mais horas de treinamento até que uma arquitetura ótima, comprimento de treinamento e partição do conjunto de dados possam ser encontrados. Quando você considera quantas variáveis devem ser alinhadas umas com as outras para que um classificador seja útil, faz sentido que os engenheiros de aprendizado de máquina estejam sempre procurando maneiras mais fáceis e eficientes de treinar e implementar modelos. Por esse motivo, a técnica de aprendizado de transferência foi criada.
Depois de projetar e testar um modelo, se o modelo se provou útil, ele pode ser salvo e reutilizado mais tarde para problemas semelhantes.
Tipos de Aprendizado de Transferência
Em geral, existem dois diferentes tipos de aprendizado de transferência: desenvolver um modelo do zero e usar um modelo pré-treinado.
Quando você desenvolve um modelo do zero, você precisará criar uma arquitetura de modelo capaz de interpretar seus dados de treinamento e extrair padrões deles. Depois que o modelo é treinado pela primeira vez, você provavelmente precisará fazer alterações nele para obter o desempenho ótimo do modelo. Você pode, então, salvar a arquitetura do modelo e usá-la como um ponto de partida para um modelo que será usado em uma tarefa semelhante.
Na segunda condição – o uso de um modelo pré-treinado – você simplesmente precisa selecionar um modelo pré-treinado para usar. Muitas universidades e equipes de pesquisa tornam as especificações de seus modelos disponíveis para uso geral. A arquitetura do modelo pode ser baixada junto com os pesos.
Ao realizar o aprendizado de transferência, a arquitetura completa do modelo e os pesos podem ser usados para a tarefa em questão, ou apenas certas porções/camadas do modelo podem ser usadas. Usar apenas parte do modelo pré-treinado e treinar o restante do modelo é referido como ajuste fino.
Ajuste Fino de uma Rede
Ajuste fino de uma rede descreve o processo de treinar apenas algumas das camadas da rede. Se um novo conjunto de dados de treinamento for muito semelhante ao conjunto de dados usado para treinar o modelo original, muitos dos mesmos pesos podem ser usados.
O número de camadas da rede que devem ser desbloqueadas e retreinadas deve ser escalonado de acordo com o tamanho do novo conjunto de dados. Se o conjunto de dados que está sendo treinado for pequeno, é uma melhor prática manter a maioria das camadas como estão e treinar apenas as últimas camadas. Isso é para evitar que a rede supra-ajuste. Alternativamente, as camadas finais da rede pré-treinada podem ser removidas e novas camadas podem ser adicionadas, que são, então, treinadas. Em contraste, se o conjunto de dados for um conjunto de dados grande, potencialmente maior que o conjunto de dados original, a rede inteira deve ser retreinada. Para usar a rede como um extrator de recursos fixo, a maioria da rede pode ser usada para extrair os recursos, enquanto apenas a última camada da rede pode ser desbloqueada e treinada.
Quando você está ajustando fino uma rede, lembre-se de que as camadas iniciais da ConvNet são as que contêm as informações que representam os recursos mais genéricos das imagens. Esses são recursos como bordos e cores. Em contraste, as camadas posteriores da ConvNet contêm os detalhes que são mais específicos das classes individuais contidas no conjunto de dados em que o modelo foi inicialmente treinado. Se você estiver treinando um modelo em um conjunto de dados que é muito diferente do conjunto de dados original, você provavelmente precisará usar as camadas iniciais do modelo para extrair recursos e apenas retreinar o restante do modelo.
Exemplos de Aprendizado de Transferência
As aplicações mais comuns de aprendizado de transferência são provavelmente aquelas que usam dados de imagem como entradas. Essas são frequentemente tarefas de previsão/classificação. A forma como as Redes Neurais Convolucionais interpretam os dados de imagem se presta a reutilizar aspectos de modelos, pois as camadas convolucionais frequentemente distinguem recursos muito semelhantes. Um exemplo de um problema comum de aprendizado de transferência é a tarefa ImageNet 1000, um conjunto de dados massive cheio de 1000 classes diferentes de objetos. Empresas que desenvolvem modelos que alcançam um desempenho alto nesse conjunto de dados frequentemente liberam seus modelos sob licenças que permitem que outros os reutilizem. Alguns dos modelos que resultaram desse processo incluem o modelo Microsoft ResNet, o modelo Google Inception e o modelo Oxford VGG grupo.








