Caffe2 - Introdução
Nos últimos dois anos, o Deep Learning se tornou uma grande tendência no aprendizado de máquina. Foi aplicado com sucesso para resolver problemas anteriormente insolúveis em Vision, Speech Recognition and Natural Language Processing(PNL). Existem muitos outros domínios nos quais o Deep Learning está sendo aplicado e mostrou sua utilidade.
Caffe (Convolutional Architecture for Fast Feature Embedding) é uma estrutura de aprendizagem profunda desenvolvida em Berkeley Vision and Learning Center (BVLC). O projeto Caffe foi criado por Yangqing Jia durante seu doutorado. na Universidade da Califórnia - Berkeley. O Caffe oferece uma maneira fácil de experimentar o aprendizado profundo. Ele é escrito em C ++ e fornece ligações paraPython e Matlab.
Ele suporta muitos tipos diferentes de arquiteturas de aprendizado profundo, como CNN (Rede Neural Convolucional), LSTM(Memória de longo prazo) e FC (totalmente conectado). Ele oferece suporte a GPU e, portanto, é ideal para ambientes de produção envolvendo redes neurais profundas. Ele também suporta bibliotecas de kernel baseadas em CPU, comoNVIDIA, Biblioteca CUDA Deep Neural Network (cuDNN) e Intel Math Kernel Library (Intel MKL).
Em abril de 2017, a empresa americana de serviços de rede social Facebook anunciou o Caffe2, que agora inclui RNN (Redes Neurais Recorrentes) e, em março de 2018, o Caffe2 foi fundido com o PyTorch. Os criadores do Caffe2 e membros da comunidade criaram modelos para resolver vários problemas. Esses modelos estão disponíveis ao público como modelos pré-treinados. Caffe2 ajuda os criadores a usar esses modelos e criar sua própria rede para fazer previsões no conjunto de dados.
Antes de entrarmos nos detalhes do Caffe2, vamos entender a diferença entre machine learning e deep learning. Isso é necessário para entender como os modelos são criados e usados no Caffe2.
Aprendizado de máquina x aprendizado profundo
Em qualquer algoritmo de aprendizado de máquina, seja ele tradicional ou de aprendizado profundo, a seleção de recursos no conjunto de dados desempenha um papel extremamente importante na obtenção da precisão de predição desejada. Em técnicas tradicionais de aprendizado de máquina, ofeature selectioné feito principalmente por inspeção humana, julgamento e profundo conhecimento do domínio. Às vezes, você pode buscar a ajuda de alguns algoritmos testados para seleção de recursos.
O fluxo de aprendizado de máquina tradicional é ilustrado na figura abaixo -
No aprendizado profundo, a seleção de recursos é automática e faz parte do próprio algoritmo de aprendizado profundo. Isso é mostrado na figura abaixo -
Em algoritmos de aprendizado profundo, feature engineeringé feito automaticamente. Geralmente, a engenharia de recursos é demorada e requer um bom conhecimento no domínio. Para implementar a extração automática de recursos, os algoritmos de aprendizado profundo geralmente pedem uma grande quantidade de dados, portanto, se você tiver apenas milhares e dezenas de milhares de pontos de dados, a técnica de aprendizado profundo pode falhar em fornecer resultados satisfatórios.
Com dados maiores, os algoritmos de aprendizado profundo produzem melhores resultados em comparação com os algoritmos de ML tradicionais com uma vantagem adicional de menos ou nenhuma engenharia de recursos.