Quais são alguns avanços recentes e potencialmente futuros no aprendizado profundo?
Há muitos desenvolvimentos recentes interessantes no aprendizado profundo, provavelmente muitos demais para que eu os descreva aqui. Mas há algumas ideias que me chamaram a atenção o suficiente para me envolver pessoalmente em projectos de investigação.A mais importante, na minha opinião, é o treino adversário (também chamado GAN for Generative Adversarial Networks). Esta é uma idéia que foi originalmente proposta por Ian Goodfellow quando ele era estudante com Yoshua Bengio na Universidade de Montreal (ele se mudou para o Google Brain e recentemente para OpenAI).
Esta, e as variações que estão sendo propostas agora é a idéia mais interessante dos últimos 10 anos no ML, na minha opinião.
A idéia é treinar simultaneamente duas redes neurais. A primeira, chamada Discriminator - vamos denotá-la D(Y) - pega uma entrada (por exemplo, uma imagem) e produz um escalar que indica se a imagem Y parece "natural" ou não. Em um exemplo de treinamento adversário, D(Y) pode ser visto como algum tipo de função de energia que toma um valor baixo (por exemplo, próximo de 0) quando Y é uma amostra real (por exemplo, uma imagem de uma base de dados) e um valor positivo quando não é (por exemplo, se é uma imagem ruidosa ou com aparência estranha). A segunda rede é chamada de gerador, designada por G(Z), onde Z é geralmente um vector aleatoriamente amostrado numa distribuição simples (por exemplo, Gaussiano). O papel do gerador é produzir imagens para treinar a função D(Y) a tomar a forma certa (valores baixos para imagens reais, valores mais altos para tudo o resto). Durante o treinamento D é mostrada uma imagem real, e ajusta seu parâmetro para fazer sua saída mais baixa. Então D é mostrada uma imagem produzida a partir de G e ajusta seus parâmetros para fazer sua saída D(G(Z)) maior (seguindo o gradiente de alguma função objetiva pré-definida). Mas G(Z) vai se treinar para produzir imagens de modo a enganar D para pensar que elas são reais. Ele faz isso obtendo o gradiente de D em relação a Y para cada amostra que produz. Em outras palavras, ele está tentando minimizar a saída de D enquanto D está tentando maximizá-la. Daí o nome de treinamento adversário.
A formulação original usa uma estrutura probabilística consideravelmente mais complicada, mas essa é a essência disso.
Por que isso é tão interessante? Ele nos permite treinar um discriminador como um "estimador de densidade" sem supervisão, ou seja, uma função de contraste que nos dá um baixo valor para os dados e um maior rendimento para tudo o resto. Este discriminador tem que desenvolver uma boa representação interna dos dados para resolver este problema adequadamente. Ele pode então ser usado como um extractor de características para um classificador, por exemplo.
Mas talvez mais interessante, o gerador pode ser visto como parametrizando a superfície complicada dos dados reais: dê-lhe um vector Z, e ele mapeia-o até um ponto no colector de dados. Há papéis onde as pessoas fazem coisas incríveis com isso, como gerar fotos de quartos, fazer aritmética em faces no espaço vetorial Z: [homem com óculos] - [homem sem óculos] + [mulher sem óculos] = [mulher com óculos].
>p>Existiu uma série de artigos interessantes do FAIR sobre o tema:>ul>li>Denton et al. "Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks" (NIPS 2015) : https://scholar.google.com/citations?view_op=view_citation&hl=en&user=RJV6hA4AAAAJ&citation_for_view=RJV6hA4AAAAJ:2osOgNQ5qMECli>Radford et al. "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks" (ICLR 2015) : https://scholar.google.com/citations?view_op=view_citation&hl=en&user=36ofBJgAAAAJ&citation_for_view=36ofBJgAAAAJ:YsMSGLbcyi4C>Mathieu et al. "Deep multi-scale video prediction beyond mean square error" : https://scholar.google.com/citations?view_op=view_citation&hl=en&user=SSTIBK0AAAAJ&sortby=pubdate&citation_for_view=SSTIBK0AAAAJ:W7OEmFMy1HYCEste último está em vídeo predição com treinamento adversário. Ele resolve uma questão realmente importante, que é que quando você treina uma rede neural (ou qualquer outro modelo) para prever o futuro, e quando há vários futuros possíveis, uma rede treinada da forma tradicional (por exemplo, com menos quadrados) irá prever a média de todos os futuros possíveis. No caso do vídeo, ele produzirá uma bagunça borrada. O treinamento adversarial permite que o sistema produza o que quiser, desde que esteja dentro do conjunto que o discriminador gosta. Isto resolve o problema da "indefinição" ao prever sob. incerteza.
Parece uma questão bastante técnica, mas eu realmente acho que ela abre a porta para todo um mundo de possibilidades.