Kit de Aplicações ML101 com Curso do Prof. Vijay

Prefácio
Visão Geral
Vivemos em um mundo dominado por dados e, embora o aprendizado de máquina tenha dado origem a algumas implicações assustadoras, há muito que pode ser feito com ele para tornar o mundo melhor — desde tarefas simples, como se manter seguro nas redes sociais, até tarefas mais complexas, como detectar padrões em laboratórios de pesquisa. Independentemente do seu setor ou caso de uso, entender sistemas embarcados e aprendizado de máquina será inestimável daqui para frente, porque é nisso que todas essas ferramentas se baseiam; sem saber como as coisas funcionam “por baixo do capô”, você não conseguirá ir muito longe com elas. E isso vale tanto para quem está procurando emprego hoje quanto para as futuras gerações, que entenderão como essas tecnologias funcionam antes mesmo de nascerem.
Indústrias como a de manufatura e automotiva já estão se beneficiando do aprendizado de máquina na forma de manutenção preditiva. Algoritmos podem ser treinados para identificar padrões típicos de falha para certos tipos de máquinas e componentes e, em seguida, enviar alertas para operadores ou até mesmo tomar ações corretivas de forma autônoma. Dessa forma, implantações de internet das coisas industriais (IoT) podem ser usadas para melhorar o tempo de atividade das plantas e reduzir os custos operacionais. O mesmo princípio básico pode ser aplicado em outros cenários também; por exemplo, sistemas de gerenciamento de tráfego podem usar algoritmos de aprendizado de máquina para prever congestionamentos e ajustar o tempo dos sinais de acordo.
No contexto de sistemas embarcados, tiny machine learning é um termo importante a ser compreendido. Ele se refere ao uso de redes neurais pequenas e leves que podem ser implantadas em dispositivos com recursos limitados, como microcontroladores. Algoritmos de tiny machine learning podem ser usados para tarefas como reconhecimento, classificação e detecção de objetos. Eles são bem adequados para sistemas embarcados porque exigem relativamente poucos dados de treinamento e podem alcançar boa precisão com um pequeno número de neurônios. Aplicações para tiny machine learning são abundantes, e alguns exemplos interessantes incluem o seguinte:
- Veículos autônomos: Redes neurais podem ser usadas para detectar obstáculos no ambiente e tomar decisões sobre como evitá-los.
- Segurança residencial: Redes neurais podem ser usadas para identificar pessoas e objetos em vídeos capturados por câmeras de segurança residenciais.
- Saúde: Algoritmos podem ser usados para detectar anomalias em imagens médicas ou para prever o risco de doenças.
- IoT industrial: Redes neurais podem ser usadas para classificar diferentes tipos de dados de sensores industriais.
- Varejo: Redes neurais podem ser usadas para identificar itens em imagens de mercadorias e recomendar produtos aos clientes.
Tiny machine learning é uma ótima forma de começar com aprendizado de máquina se você é novo na área. Também é uma boa maneira de aprender mais sobre sistemas embarcados e como eles podem ser usados em conjunto com algoritmos de aprendizado de máquina. Se você estiver interessado em começar, há algumas coisas que precisa saber. Primeiro, você precisará ter acesso a uma máquina que possa executar código de rede neural Tiny, como o Wio Terminal. Segundo, você precisará de dados de treinamento para o algoritmo que utilizará. Vamos analisar diferentes projetos de exemplo para entender dados de treinamento. Terceiro, você precisará escolher um algoritmo de aprendizado de máquina que combine com sua aplicação. Usaremos redes neurais para isso.
Não se assuste se alguma dessas palavras soar estranha para você. Este manual foi projetado para iniciantes começarem com TinyML. Não importa a sua idade, se você quiser aprender algo, você vai aprender. Você aprenderá a treinar e implantar modelos de redes neurais profundas em dispositivos microcontroladores com núcleo ARM Cortex-M da Seeed studio, usando o que há de mais recente em software de ML de ponta com ferramentas como TensorFlow Lite for Microcontrollers e Edge Impulse.
Para Quem é Este Livro
Este livro foi projetado especificamente para que educadores possam adotar o Wio Terminal em sala de aula ou em workshops para mostrar aos aprendizes o poder do TinyML. Ele fornece as bases que alguém precisaria cobrir para ensinar o básico de ML, mantendo os conceitos ancorados em exercícios práticos.
Estrutura do Curso
Este livro foi especificamente projetado para servir como um livreto prático para professores e aprendizes começarem com TinyML. Idealmente, alguém poderá aprender os conceitos deste livro e ser capaz de ensinar os conceitos fundamentais de aprendizado de máquina aplicado. A palavra-chave é aplicado, já que este curso se concentra na aplicação de conceitos de aprendizado de máquina, em vez dos aspectos técnicos e teóricos do aprendizado de máquina.
- Idade mínima dos estudantes: 12+
- Número planejado de aulas: 5 aulas expositivas, 5 laboratórios e 2 projetos
- Duração dos projetos práticos: 45 min
Requisitos do Curso
Conhecimentos básicos de Arduino IDE e C++
Materiais do Curso
Os materiais incluem este manual e o “Getting Started with the TinyML Kit” da SEEED studio. Tudo o que você precisa para começar está disponível neste curso em uma caixa.

O Que Você Vai Aprender
Usuários deste livro aprenderão a treinar e implantar modelos de redes neurais profundas em dispositivos microcontroladores com núcleo Cortex-M da Seeed studio. O conteúdo do curso apresenta XXX projetos detalhados passo a passo que permitirão aos estudantes compreender ideias básicas sobre o aprendizado de máquina moderno e como ele pode ser usado em microcontroladores de baixo consumo e baixo footprint para criar sistemas inteligentes e conectados.
Após concluir o curso, os estudantes serão capazes de projetar e implementar seus próprios projetos habilitados por aprendizado de máquina em microcontroladores com núcleo Cortex-M, começando pela definição de um problema, passando pela coleta de dados e treinamento do modelo de rede neural e, por fim, implantando-o no dispositivo para exibir resultados de inferência ou controlar outros equipamentos de hardware com base nos dados de inferência. O conteúdo do curso é baseado no uso da plataforma Edge Impulse, que simplifica o pipeline de coleta de dados/ treinamento de modelo/ conversão.
Introdução
Inteligência Artificial para Iniciantes
O que é inteligência artificial?
Inteligência Artificial, ou IA, é a inteligência demonstrada por máquinas. Ela é frequentemente confundida com criatividade, inteligência e consciência. Mas não é nenhuma dessas coisas. IA pode ser encontrada em muitas casas modernas na forma de alto-falantes inteligentes como Amazon Echo ou Google Home, que são programados para responder a perguntas simples, dar atualizações de trânsito e até controlar outros dispositivos em sua casa. E embora a maioria das pessoas acredite que sabe do que se trata a inteligência artificial, acontece que a maioria está errada! A verdade é que a IA existe há muito tempo (desde 1951), mas somente recentemente (início de 2010) vimos seu potencial para mudar tudo, desde a forma como dirigimos nossos carros até como pedimos comida para viagem. Então vamos olhar mais de perto para a IA e ver qual é todo esse alvoroço.
Como a IA funciona?
IA funciona usando um processo chamado “aprendizado de máquina”, sobre o qual aprenderemos muito em breve. Em resumo, essa é uma forma de os computadores aprenderem com dados sem serem explicitamente programados. Por exemplo, se você quisesse ensinar um computador a reconhecer fotos de gatos, primeiro teria que alimentá-lo com muitas fotos de gatos. Depois disso, o computador seria capaz de analisar novas fotos e dizer se elas são de gatos ou não. Isso é feito com algo chamado rede neural, que é um tipo de inteligência artificial que pode aprender sozinha analisando dados. Vamos aprender mais sobre redes neurais e como “treiná-las” mais adiante no curso.
Por que a IA é importante?
Há muitas razões pelas quais a IA é importante, mas uma das principais é que ela tem o potencial de resolver alguns dos maiores problemas do mundo. Por exemplo, IA pode ser usada para ajudar médicos a diagnosticar doenças ou ajudar agricultores a prever safras. IA também pode ser usada para criar novos medicamentos e melhorar filtros de spam de e-mail. Na verdade, não há área da vida em que a IA não possa atuar.
A inteligência artificial oferece vários benefícios em relação a métodos tradicionais, como estatística e regressão linear. Alguns desses benefícios incluem:
- Modelos de aprendizado de máquina são capazes de aprender sozinhos, sem necessidade de intervenção manual.
- Eles podem lidar com grandes quantidades de dados de forma mais eficiente do que métodos tradicionais.
- Eles são capazes de identificar padrões que são complexos demais para que humanos consigam perceber.
A IA é segura?
Uma das principais preocupações das pessoas sobre IA é que ela possa ser perigosa. Afinal, se computadores podem aprender por conta própria, eles poderiam potencialmente aprender a fazer coisas ruins. No entanto, especialistas concordam que o risco de computadores se tornarem malignos é muito baixo. Na verdade, o perigo real com IA vem dos próprios humanos. Por exemplo, se dermos poder demais a sistemas de IA, os humanos podem acabar se colocando em perigo.
A Revolução da IA
Uma das coisas mais importantes a lembrar sobre IA é que ela não é apenas outra tecnologia legal. É, na verdade, uma revolução que tem o poder de mudar tudo — incluindo nossa economia, sistemas sociais e até a forma como vivemos. Isso soa bem assustador, mas especialistas concordam que, se trabalharmos juntos para aproveitar essa tecnologia incrível, a inteligência artificial poderá ajudar a resolver alguns dos maiores problemas do mundo.
Além disso, especialistas preveem que pessoas que abraçarem a IA terão mais sucesso do que aquelas que se opuserem a ela. A chave aqui é cooperação, então junte-se a mim aprendendo o máximo que puder sobre IA, porque temos tempos empolgantes pela frente! Agora saia e informe-se sobre o que é inteligência artificial e como ela funciona para que você possa estar pronto para o futuro da IA!
A Base Conceitual da IA
Inteligência Artificial não é apenas mais uma tecnologia que se tornou comum na sociedade atual. A IA tem o poder de revolucionar todos os aspectos do mundo, incluindo nossa economia, sistema social e até a forma como vivemos. A inteligência artificial percorreu um longo caminho ao longo dos anos, revelando que é mais do que apenas um projeto de ciência da computação.
Os pensamentos subjacentes à inteligência artificial originaram-se no trabalho do filósofo britânico Alan Turing sobre as capacidades intelectuais das máquinas. Ele passou a vida estudando matemática e ciência da computação na Universidade de Cambridge, na qual mais tarde atuou como pesquisador acadêmico. Seu artigo "Computing Machinery and Intelligence" foi publicado pela revista Mind em 1950, com muitas pessoas presentes. Nesse artigo, Turing propôs o que veio a ser conhecido como o "Teste de Turing", que se tornou o padrão de fato para determinar se uma determinada inteligência artificial foi alcançada.

Passar no Teste de Turing, que envolve fazer com que a inteligência artificial reproduza traços de personalidade humanos para enganar as pessoas a ponto de pensarem que estão falando com outro humano em vez de uma máquina inteligente, significa que as máquinas se fazem passar por humanas em mais de 30% das vezes. Embora isso não seja perfeito, mostra que a IA pode estar muito próxima dos humanos. "Computing Machinery and Intelligence" abriu caminho para futuros trabalhos de literatura que lidam com inteligência artificial, como o livro Robopocalyse de Daniel H. Wilson, em que robôs tomam conta do mundo ao se tornarem autoconscientes. Embora existam muitas outras obras de literatura e filmes que se aprofundaram no tema da inteligência artificial, este é um dos primeiros artigos a propor o teste que ainda é usado hoje.
Embora o artigo de Turing tenha permitido investigações mais aprofundadas sobre inteligência artificial, houve outros trabalhos que também ajudaram nesse caminho. Em 1956, John McCarthy organizou um workshop de verão no Dartmouth College dedicado ao tema, que passou a ser conhecido como o Dartmouth Summer Research Project on Artificial Intelligence. Este era um novo campo que explorava como os computadores poderiam ser feitos para "pensar" e resolver problemas como os humanos. A questão de se um computador pode pensar existe há muitos anos; no entanto, isso levou o tema a novos patamares ao reunir algumas das melhores mentes em matemática e engenharia.
Desde então, a inteligência artificial tem sido uma área em crescimento, usada de muitas maneiras diferentes. Um dos principais usos da IA na sociedade moderna é o controle de eletrodomésticos, como alto-falantes inteligentes. Esses dispositivos foram programados para responder a perguntas simples, fornecer alertas e até controlar outros dispositivos da Internet das Coisas (IoT) em sua casa. A principal preocupação com um alto-falante inteligente, por exemplo, é se ele está sempre ouvindo você. Embora tenham ocorrido casos de alguns dispositivos terem sido invadidos e gravado conversas sem permissão, a maioria das empresas tomou as devidas precauções para garantir que esses problemas não ocorram em seus produtos. Isso mostra que a IA pode ser usada de muitas maneiras diferentes que são benéficas para a sociedade.
Outra preocupação que as pessoas têm é como a inteligência artificial vai tomar os empregos. Com o desenvolvimento de carros autônomos, por exemplo, muitas pessoas estão preocupadas com o futuro dos empregos no setor de transporte. No entanto, é importante perceber que, embora essas tecnologias possam substituir certos empregos no curto prazo, elas também criarão novas oportunidades para outros tipos de trabalho. Por exemplo, o desenvolvimento de carros autônomos exigirá pessoas com habilidades em programação e reparo desses veículos. Assim, é importante não ter medo das novas tecnologias, mas sim abraçá-las e aprender como usá-las a nosso favor.
Resumindo, a inteligência artificial percorreu um longo caminho desde sua concepção e pode ser usada de muitas maneiras diferentes. Embora existam algumas preocupações em torno dela que precisam ser abordadas, muitas pessoas estão percebendo que a IA pode, na verdade, melhorar suas vidas de muitas maneiras diferentes. Desde que as empresas tomem as devidas precauções para garantir nossa privacidade, a inteligência artificial pode continuar a crescer conosco e ajudar a sociedade a melhorar por muitos anos.
Machine Learning e Deep Learning

Machine Learning
Machine learning é um ramo da inteligência artificial (IA) focado em criar aplicações que aprendem a partir de dados e melhoram sua precisão ao longo do tempo sem serem programadas explicitamente para isso. A base do machine learning é que, em vez de ter que ser ensinadas a fazer tudo passo a passo, as máquinas, se puderem ser programadas para pensar como nós, podem aprender a trabalhar observando, classificando e aprendendo com seus erros, assim como fazemos. Machine learning é um tipo de inteligência artificial baseado na ideia de que programas de computador podem ser feitos para extrair informações dos dados sem serem explicitamente programados. Ele observa os padrões em grandes conjuntos de dados e extrai desses padrões regras ou algoritmos que depois podem ser usados para fazer previsões.
Deep Learning
Deep Learning é um subconjunto do machine learning que utiliza redes neurais artificiais profundas (daí o nome) para aprender a partir de grandes quantidades de dados. Ele é modelado com base em como o cérebro humano funciona internamente. Um programa de software contém “neurônios” (muito semelhantes aos do nosso cérebro) com conexões entre eles. Essas conexões são modificadas quando expostas a novos dados, de modo que saibam como processar as informações de entrada. Deep Learning é diferente de Machine Learning porque não se restringe ao “aprendizado supervisionado”. É como ter um professor ao seu lado dizendo exatamente o que você acertou ou errou em cada passo de matemática. Ele ou ela é capaz de “supervisionar” você apenas porque é especialista no assunto. Portanto, por concepção, ele pressupõe supervisão. No entanto, o deep learning também pode usar dados não supervisionados, o que é onde "deep" se refere ao uso de algoritmos que criam estruturas complexas a partir de dados não rotulados, como imagens ou texto. À medida que avançarmos ao longo do curso, aprenderemos muito mais sobre os detalhes desses diferentes métodos de aprendizado.
Aplicações de Deep Learning
Deep learning é amplamente utilizado em muitas indústrias atualmente. É usado em finanças para coisas como previsão do mercado de ações, avaliação de risco e detecção de fraude. Também é usado em marketing para coisas como segmentação de clientes, personalização e otimização de conteúdo. Na saúde, machine learning é usado para tarefas como diagnóstico, planejamento de tratamento e monitoramento de pacientes. Ele teve um impacto transformador em nossa sociedade.
Um exemplo do impacto transformador que o machine learning teve na sociedade é como ele ajudou a economizar dinheiro e salvar vidas. Por exemplo, como mencionado anteriormente, algoritmos de deep learning podem fazer previsões sobre ações, como prever se elas vão subir ou descer. Essas previsões orientam estratégias de investimento e melhoram as decisões financeiras. Da mesma forma, o deep learning também pode fazer previsões médicas para melhorar o diagnóstico de pacientes e salvar vidas. Um estudo descobriu que redes neurais profundas conseguiam prever pacientes com sepse com mais de 83% de precisão, em comparação com ferramentas de diagnóstico tradicionais, que tinham uma taxa de precisão de 55%. As possibilidades são infinitas e os benefícios são claros. Machine learning não só é capaz de fazer previsões com maior precisão do que humanos, como também consegue fazer isso em um ritmo muito mais rápido. Então, o que você está esperando?
Vamos pegar outro exemplo. A manufatura tornou-se cada vez mais dependente da tecnologia de computação, fornecendo dados em tempo real sobre todos os aspectos da produção de maneiras que antes eram inimagináveis. Em nenhum lugar isso é mais evidente do que na indústria automobilística, onde os carros estão sendo vistos cada vez menos como produtos físicos e mais como computadores sobre rodas.
Deep learning tem sido aplicado à manufatura com grande efeito. Ao usar software para aprender constantemente com a enorme quantidade de dados coletados ao longo do processo de fabricação, as empresas conseguem aumentar a produtividade enquanto reduzem o desperdício por meio de maior eficiência. As empresas estão se beneficiando financeiramente desses efeitos, enquanto os clientes recebem produtos de melhor qualidade a preços mais baixos. Machine learning permite que os fabricantes melhorem constantemente seus processos para criar bens de maior qualidade, mais rapidamente e com mais eficiência do que nunca.
Deep learning melhorou produtos que usamos diariamente, como as recomendações da Netflix ou as traduções de texto do Google Translate, mas também permite que empresas como Amazon e Uber economizem dinheiro com custos de atendimento ao cliente ao identificar rapidamente clientes insatisfeitos. O que pode surpreender ainda mais as pessoas é que o machine learning é usado por muitos museus para acompanhar suas pinturas e evitar que ocorram furtos de arte.
Deep learning está mudando a forma como vivemos e trabalhamos. Empresas de uma ampla gama de indústrias já estão usando IA em grande vantagem, melhorando a produtividade enquanto fazem previsões mais precisas do que nunca. Quer você queira usar deep learning em seu negócio ou simplesmente queira entender como ele funciona, a única coisa entre você e essa tecnologia incrível é o conhecimento. Então, por que não reservar um tempo hoje para aprender sobre uma das tecnologias mais empolgantes do nosso tempo? O uso de machine learning só aumenta à medida que o campo da inteligência artificial se desenvolve. Com mais dados sendo coletados todos os dias, existem possibilidades infinitas para o que o machine learning pode fazer. A única coisa que nos impede é nosso entendimento de como ele funciona. Então, reserve um tempo hoje para aprender sobre essa tecnologia incrível e veja como você pode aplicá-la à sua própria vida e ao seu trabalho. Você não vai se arrepender!
Sessão de Perguntas e Respostas
- Qual é a diferença entre IA e aprendizado de máquina?
- Quem é Alan Turing?
- O que é o Teste de Turing?
- Além dos exemplos apresentados neste capítulo, quais são outros grandes usos de inteligência artificial nas empresas ou em nossas vidas diárias hoje?
- Quais são alguns perigos ou riscos potenciais que vêm com a inteligência artificial?
- Você acha que a IA será autoconsciente como os humanos são?
O Futuro do Aprendizado de Máquina é Minúsculo e Brilhante
Vivemos em um mundo dominado por dados e, embora o aprendizado de máquina tenha dado origem a algumas implicações assustadoras, há muito que pode ser feito com ele para tornar o mundo melhor — desde tarefas simples, como manter-se seguro nas redes sociais, até tarefas mais complexas, como detectar padrões em laboratórios de pesquisa. Independentemente do seu setor ou caso de uso, entender sistemas embarcados e aprendizado de máquina será inestimável daqui para frente, porque é nisso que todas essas ferramentas se baseiam; sem saber como as coisas funcionam “debaixo do capô”, você não conseguirá ir muito longe com elas. E isso vale tanto para as pessoas que procuram emprego hoje quanto para as futuras gerações que entenderão como essas tecnologias funcionam antes mesmo de nascerem.
Sistemas embarcados são onipresentes em nossas vidas, e a maioria das pessoas nem percebe isso. Eles estão em nossos carros, micro-ondas, eletrodomésticos e até em nossas roupas. Um sistema embarcado é um dispositivo que controla outro dispositivo ou grupo de dispositivos para realizar uma tarefa específica. Sistemas embarcados também são críticos para o funcionamento do mundo ao nosso redor. Eles são responsáveis por coisas como manter nossos carros na estrada e nossos micro-ondas cozinhando comida. Sem sistemas embarcados, nosso mundo seria um lugar muito diferente.
Existem muitos tipos diferentes de sistemas embarcados. O tipo mais comum é o microcontrolador. Uma unidade de microcontrolador (MCU) é um pequeno computador embarcado que pode ser programado para controlar outros dispositivos. Eles são encontrados em tudo, de carros a eletrodomésticos. Tome, por exemplo, o ARM Cortex M0+ e a placa Seeeduino XIAO, que é tão pequena quanto um polegar (21x17,8 mm), consome apenas 1,33 mAh de energia (o que implica que pode funcionar por 112 horas com uma bateria de 150 mA, muito mais tempo se colocada em modo de hibernação profunda) e custa apenas 4,3 USD. Outro tipo comum de sistema embarcado é o processador digital de sinais (DSP). DSPs são usados para processar sinais digitais, como áudio e vídeo. Eles são encontrados em coisas como smartphones e tablets. Você pode encontrar informações adicionais na seção de Apêndice sobre Sistemas Embarcados.

O futuro trará mais dispositivos embarcados para nossas vidas, como tecnologias vestíveis, por exemplo Smart Watches e Fitbits. Sistemas embarcados também se tornarão mais complexos, com mais recursos e capacidades. À medida que nosso mundo se torna cada vez mais dependente de sistemas embarcados, é importante entender como eles funcionam e o papel que desempenham em nossas vidas, especialmente com o advento do aprendizado de máquina.
Indústrias como manufatura e automotiva já estão se beneficiando do aprendizado de máquina embarcado na forma de manutenção preditiva. Algoritmos podem ser treinados para identificar padrões típicos de falha para certos tipos de máquinas e componentes, após o que podem enviar alertas para operadores ou até tomar ações corretivas de forma autônoma. Dessa forma, implantações industriais de internet das coisas (IoT) podem ser usadas para melhorar o tempo de atividade das plantas e reduzir custos operacionais. O mesmo princípio básico pode ser aplicado em outros contextos também; por exemplo, sistemas de gerenciamento de tráfego poderiam usar algoritmos de aprendizado de máquina para prever congestionamentos e ajustar o tempo dos semáforos de acordo.

Aprendizado de Máquina na Nuvem
O aprendizado de máquina agora é uma tecnologia consolidada que tem sido aproveitada em muitos setores. Aprendizado de máquina envolve a coleta de dados, o processamento desses dados e, em seguida, a extração de percepções algorítmicas deles para fazer previsões sobre eventos futuros. Aprendizado de máquina é um subconjunto da inteligência artificial (IA). Algoritmos de aprendizado de máquina normalmente envolvem muitos cálculos e exigem conjuntos de dados muito grandes, o que limita o número de experimentos que você pode fazer e torna difícil validar suas descobertas. O Aprendizado de Máquina na Nuvem fornece um serviço para aprendizado de máquina e IA e cuida do trabalho pesado, para que as empresas não precisem se preocupar em gerenciar infraestrutura complexa ou hardware caro.
Aprendizado de Máquina de Borda
A diferença entre aprendizado de máquina na nuvem e aprendizado de máquina de borda é que o aprendizado de máquina na nuvem normalmente significa que há um servidor central que processa todos os dados e faz todo o aprendizado de máquina, enquanto o aprendizado de máquina de borda envolve o processamento dos dados nos dispositivos de borda, como telefones, carros ou drones. O aprendizado de máquina de borda é importante porque permite a tomada de decisões localmente e evita o envio de todos os dados para um servidor central para processamento, o que pode ser lento e caro.
Tiny Machine Learning
Outra abordagem de aprendizado de máquina que está se tornando cada vez mais popular é o Tiny Machine Learning (TinyML). Aprendizado de máquina envolve treinar modelos com muitos dados e calcular os parâmetros do modelo com base nos relacionamentos estatísticos nos dados. Algoritmos de aprendizado de máquina geralmente exigem muito processamento e conjuntos de dados, o que torna realmente difícil treinar um modelo quando não há muitos dados disponíveis. Este é especialmente o caso dos algoritmos de classificação de aprendizado de máquina, em que o número de classes possíveis no conjunto de dados precisa ser conhecido antes que o treinamento possa começar.
Tiny Machine Learning (TinyML) é um subconjunto de Aprendizado de Máquina que se concentra em treinar modelos com dados e recursos limitados. Ele é particularmente adequado para aplicações em que algoritmos tradicionais de aprendizado de máquina são exigentes demais em recursos ou difíceis de implementar. Tiny Machine Learning tem sido usado para tudo, desde aplicações de consumo, como manufatura inteligente, até controle de veículos autônomos.
Uma das razões pelas quais o Tiny Machine Learning está se tornando mais popular é que os microcontroladores em dispositivos de borda estão se tornando mais poderosos e mais baratos. Microcontroladores são pequenos computadores usados em uma ampla gama de dispositivos, de carros a drones. Eles estão se tornando mais poderosos e mais baratos à medida que a indústria de semicondutores migra para geometrias menores. Isso significa que algoritmos de Tiny Machine Learning podem ser executados em dispositivos de borda, como telefones, carros ou drones, sem usar muita energia ou ocupar muito espaço.
Tiny Machine Learning para Sistemas IoT
Microcontroladores estão se tornando mais poderosos rapidamente, mas ainda têm memórias e poder de computação relativamente pequenos em comparação com servidores tradicionais. Algoritmos de IA que exigem grandes conjuntos de dados ou cálculos complexos não podem ser implementados nessas tecnologias sem uma reformulação completa. TinyML pode abrir novas possibilidades para aprendizado de máquina, especialmente no espaço da Internet das Coisas (IoT), onde sistemas de controle simples estão sendo usados para aplicações inovadoras, que vão desde implantes médicos inteligentes até carros autônomos.
Tornou-se possível oferecer a esses dispositivos minúsculos inteligência adicional graças a avanços recentes em otimização de modelos e ao surgimento de frameworks especificamente projetados para realizar inferência de modelos de aprendizado de máquina em microcontroladores. Agora podemos usar redes neurais em microcontroladores para reconhecer cenas de áudio (por exemplo, atividade de elefantes ou o som de vidro quebrando), detectar palavras-chave (para ativar um dispositivo com uma frase específica) e até reconhecer imagens simples. Os dispositivos com microcontroladores integrados podem ser usados para dar nova vida e significado a sensores existentes, como empregar um acelerômetro montado em um mecanismo para detecção de anomalias e manutenção preditiva — ou para distinguir entre diferentes tipos de licores, como demonstrado nesta demonstração! O potencial do TinyML é verdadeiramente ilimitado.
Como Funciona o Tiny Machine Learning
Algoritmos de Tiny Machine Learning são projetados para funcionar em pequenos conjuntos de dados que podem ser processados em um microcontrolador ou sistema embarcado. Esses algoritmos geralmente são baseados em regressão linear ou redes neurais, que podem ser implementados usando uma quantidade muito pequena de código. Modelos de aprendizado de máquina podem ser treinados usando uma quantidade limitada de dados e podem ser adaptados a mudanças no conjunto de dados com muito mais facilidade do que algoritmos tradicionais de aprendizado de máquina.
Isso torna o tiny machine learning uma escolha ideal para aplicações em que os dados são escassos ou difíceis de coletar, como em veículos autônomos ou dispositivos médicos. Ele também permite o desenvolvimento de modelos de aprendizado de máquina que podem ser executados em dispositivos de baixa potência sem exigir uma grande quantidade de memória ou processamento
Os Recursos São Limitados, Mas a Concorrência Também
O uso de algoritmos de tiny machine learning ainda está em seus estágios iniciais, e a maior parte da pesquisa nessa área tem se concentrado em desenvolver novas maneiras de implementar esses algoritmos em pequenos dispositivos. Isso deixa muito espaço para inovação e muitas oportunidades para empreendedores arrojados levarem o Aprendizado de Máquina a novos mercados. Ao mesmo tempo, a concorrência por recursos provavelmente será intensa. Grandes empresas de tecnologia como Google e Amazon já estão investindo pesadamente em aprendizado de máquina e provavelmente entrarão também no mercado de Tiny Machine Learning. Isso pode representar um desafio para pequenas startups que tentam competir nesse espaço.
Sessão de Perguntas e Respostas
P. Você pode explicar as diferenças entre aprendizado de máquina na nuvem, de borda e embarcado? P. Do que uma máquina minúscula precisa para aprender? P. Existem limitações para o tiny machine learning? P. Como podemos usar tiny machine learning em casa ou no escritório? P. Como essas máquinas chegam a conclusões com base em seu conjunto de dados e quão pequeno é esse conjunto de dados, tipicamente? P. Quando é melhor usar uma máquina grande em vez de um sistema de tiny machine learning?
Taxonomia de Algoritmos de Aprendizado de Máquina
Existem três classes principais de algoritmos de aprendizado de máquina: supervisionado, não supervisionado e por reforço. Em algoritmos de aprendizado de máquina supervisionado, a máquina recebe um conjunto de dados de treinamento e, em seguida, aprende a partir desses dados para fazer previsões sobre novos dados. Algoritmos de aprendizado de máquina não supervisionado ajudam você a explorar seu conjunto de dados para encontrar padrões ocultos sem ter um resultado específico em mente. Algoritmos de aprendizado de máquina por reforço são um tipo de algoritmo de aprendizado de máquina em que a máquina aprende a partir de experiências de tentativa e erro. Cada algoritmo de aprendizado de máquina resolve um problema de aprendizado de máquina de forma diferente e alguns problemas de aprendizado de máquina podem ser solucionáveis apenas por determinados algoritmos de aprendizado de máquina.
Aprendizado Supervisionado
O Que É Aprendizado Supervisionado?
Aprendizado de máquina supervisionado é a tarefa de aprendizado de máquina de encontrar uma função que mapeia uma entrada para uma saída com base em pares de exemplo de entrada‑saída. Também é chamado de aprendizado supervisionado porque a máquina depende de alguma forma de supervisão (por exemplo, um "professor") para aprender com seu ambiente e melhorar o desempenho. A máquina não é capaz de aprender completamente sem ajuda de humanos nesse caso; ela precisa de orientação e feedback sobre quais entradas levam às saídas desejadas.
Como o Aprendizado de Máquina Supervisionado Funciona?
No aprendizado de máquina supervisionado, a pessoa que está treinando o computador realiza uma tarefa que se enquadra em uma de três categorias: rotular, categorizar ou medir. Rotular envolve atribuir uma categoria a um item – por exemplo, rotular de vermelho todas as maçãs como pertencentes à categoria maçã. Categorizar significa colocar itens em grupos de acordo com alguma propriedade compartilhada. Por exemplo, agrupar todos os animais poderia ser chamado de categorização de animais. Medir significa avaliar alguma propriedade, como tamanho ou peso, e então fornecer um valor quantitativo para ela em uma escala – como medir quantas maçãs há nesta cesta e dizer que há 36 maçãs aqui.

O objetivo do aprendizado de máquina supervisionado é sempre construir modelos baseados em dados históricos que possam ajudar a prever resultados e tomar decisões. Treinar os algoritmos para fazer isso leva muito tempo e esforço, mas há muitos benefícios. Para começar, quanto mais dados são fornecidos, melhor o modelo se torna em prever resultados. Quanto mais informações chegam, mais próximo ele chega de antecipar o que pode acontecer no futuro. Em segundo lugar, algoritmos podem usar rótulos como "saudável" ou "doente". O aprendizado de máquina supervisionado é até capaz de incorporar propriedades categóricas como cor da pele ou sexo ao fazer previsões. Isso não só ajuda com a exatidão, mas também garante que nenhuma experiência pessoal ou viés influencie seu processo de tomada de decisão.
O aprendizado de máquina supervisionado é uma ferramenta poderosa que pode ser usada com grande efeito em muitas áreas diferentes. Sua capacidade de limitar vieses e fazer previsões com precisão crescente o torna uma parte essencial do kit de ferramentas do cientista de dados. Com a disponibilidade de dados em constante crescimento, é certo que desempenhará um papel ainda mais importante nos próximos anos.
Exemplos de como o aprendizado de máquina supervisionado pode ser usado no mundo real:
- Varejistas podem usá-lo para treinar modelos que preveem o comportamento do cliente e adaptar suas ofertas de acordo.
- Cientistas de dados podem usar aprendizado de máquina supervisionado para modelar linguagem natural e encontrar padrões em dados não estruturados.
- O setor de saúde pode usá-lo para desenvolver modelos para prever resultados de saúde para certas populações.
Quais São os Benefícios do Aprendizado de Máquina Supervisionado?
Cientistas de dados usam esse tipo de aprendizado de máquina para construir modelos que reflitam dados de treinamento, que são dados que foram rotulados ou categorizados de alguma forma. Em outras palavras, eles devem ter um rótulo associado, como "saudável" ou "doente". O objetivo de construir um modelo é treinar algoritmos sobre o que eles devem procurar e como devem se comportar ao classificar dados daqui para frente.
Quem Pode Realizar Aprendizado de Máquina Supervisionado?
Cientistas de dados usam esse tipo de aprendizado de máquina para construir modelos que reflitam dados de treinamento, que são dados que foram rotulados ou categorizados de alguma forma. Em outras palavras, eles devem ter um rótulo associado, como "saudável" ou "doente". O objetivo de construir um modelo é treinar algoritmos sobre o que eles devem procurar e como devem se comportar ao classificar dados daqui para frente.
Quais São as Desvantagens do Aprendizado de Máquina Supervisionado?
O aprendizado de máquina supervisionado funciona melhor com grandes quantidades de dados de treinamento rotulados/categorizados/medidos porque mais informação significa melhores resultados e previsões. Se não houver dados suficientes, pode ser difícil treinar um modelo que produza boas previsões. Além disso, algoritmos só são tão bons quanto os humanos que os projetam e supervisionam. Se houver viés nos dados de treinamento, é provável que esse viés seja reproduzido nos modelos criados pelo aprendizado de máquina supervisionado.
Qual É Um Exemplo de Aprendizado de Máquina Supervisionado em Ação?
Uma aplicação comum de aprendizado de máquina supervisionado é a detecção de fraude. Nesse caso, empresas de cartão de crédito podem usar algoritmos de aprendizado de máquina supervisionado para identificar padrões no comportamento de gastos que possam indicar atividade fraudulenta. Isso pode envolver modelar dados passados para procurar irregularidades ou atividades incomuns, como alguém de repente começar a cobrar muitos itens em um curto período de tempo.
Quais São as Limitações do Aprendizado de Máquina Supervisionado?
O aprendizado de máquina supervisionado pode fornecer treinamento preciso ao algoritmo, o que o ajuda a aprender qual comportamento é esperado. Se não houver dados suficientes, pode ser difícil treinar um modelo que produza boas previsões. Além disso, algoritmos só são tão bons quanto os humanos que os projetam e supervisionam. Se houver viés nos dados de treinamento, isso provavelmente será reproduzido nos modelos criados pelo aprendizado de máquina supervisionado.
Qual É o Futuro do Aprendizado Supervisionado?
É provável que o aprendizado de máquina supervisionado se torne ainda mais importante no futuro. Com a quantidade de dados sendo gerada crescendo constantemente, é mais importante do que nunca ter uma forma de interpretar tudo isso com precisão. O aprendizado de máquina supervisionado é uma das maneiras mais eficazes de fazer exatamente isso. Além disso, à medida que mais e mais empresas percebem o valor da ciência de dados, a demanda por cientistas de dados qualificados continuará a aumentar. Isso significa que o aprendizado de máquina supervisionado se tornará uma parte ainda mais integrante das operações de negócios, enquanto as organizações buscam obter uma vantagem competitiva.
Qual É o Exemplo Mais Simples de Aprendizado Supervisionado?
A forma mais comum de aprendizado de máquina supervisionado é a regressão linear. Regressão linear é uma técnica para ajustar uma reta a um conjunto de pontos de dados, em que cada ponto de dados é representado por duas coordenadas (x, y). O algoritmo de aprendizado de máquina encontra a melhor linha que se ajusta aos pontos de dados, com base em uma medida de erro chamada função de custo.

No aprendizado supervisionado, cada exemplo é um par constituído de um objeto de entrada (tipicamente um vetor) e um valor de saída desejado (também chamado de sinal de supervisão). O algoritmo de aprendizado de máquina é "treinado" ajustando seus parâmetros para que produza a combinação mais próxima possível entre os valores previstos e os valores‑alvo.
Algoritmos de aprendizado de máquina supervisionado também podem ser usados para classificação. Classificação é a tarefa de identificar a qual categoria uma entrada pertence, a partir de um conjunto predefinido de categorias. Por exemplo, você pode querer usar aprendizado de máquina para distinguir entre imagens de cães e gatos. Nesse caso, a entrada seria uma imagem, e a saída desejada seria o nome do animal representado: "dog" ou "cat”.

Aprendizado Não Supervisionado
O Que É Aprendizado Não Supervisionado?
Outro tipo de aprendizado de máquina que vem ganhando força nos últimos anos é o aprendizado de máquina não supervisionado. Essa área de pesquisa combina o poder das máquinas com a capacidade humana de organizar, rotular e interpretar conjuntos de dados. Técnicas de ML não supervisionado são usadas para tarefas como redução de dimensionalidade, clusterização, visualização, seleção de atributos etc.
- Redução de dimensionalidade: Reduzir o número de dimensões em um conjunto de dados. Isso pode ser feito, por exemplo, transformando os dados em um espaço de menor dimensão.
- Clusterização: O processo de agrupar itens semelhantes.
- Visualização: O processo de exibir dados de uma forma que os torne fáceis de entender.
- Seleção de atributos: O processo de selecionar um subconjunto de atributos de um conjunto de dados. Isso pode ser feito, por exemplo, para reduzir o tamanho do conjunto de dados ou para tornar mais fácil treinar um algoritmo de aprendizado de máquina.
Como o Aprendizado Não Supervisionado Funciona?
No aprendizado de máquina não supervisionado, algoritmos são usados para encontrar padrões em conjuntos de dados. Existem muitos tipos diferentes de algoritmos de aprendizado de máquina não supervisionado, e cada um tem seu próprio conjunto de instruções. Exemplos de algoritmos de aprendizado de máquina não supervisionado: k-means, k-nearest neighbor, clusterização hierárquica, latent Dirichlet allocation etc.
Para criar um modelo de aprendizado de máquina não supervisionado bem-sucedido, há três componentes essenciais: dados, algoritmos e feedback. Os dados são a entrada para o modelo, os algoritmos são as ferramentas usadas para encontrar padrões nos dados e o feedback é usado para melhorar a precisão do modelo. O processo de aprendizado de máquina não supervisionado pode ser dividido em quatro etapas: pré-processamento, exploração de dados, detecção de padrões e pós-processamento.
- Pré-processamento: Esta etapa é usada para limpar e preparar os dados para análise posterior.
- Exploração de dados: Esta etapa é usada para explorar os dados e encontrar padrões.
- Detecção de padrões: Esta etapa é usada para detectar padrões nos dados.
- Pós-processamento: Esta etapa é usada para melhorar a precisão do modelo e preparar os dados para implantação.
Quais São As Vantagens E Desvantagens Do Aprendizado De Máquina Não Supervisionado?
Uma das vantagens do aprendizado de máquina não supervisionado é que ele pode ser usado para tarefas que são difíceis ou impossíveis para os humanos fazerem sozinhos. Por exemplo, o agrupamento de conjuntos de dados pode identificar padrões que ficariam escondidos ao olho humano. Além disso, o aprendizado não supervisionado pode ajudar a aprimorar algoritmos de aprendizado de máquina supervisionado já existentes. Ao usar técnicas de agrupamento em um conjunto de dados, algoritmos supervisionados podem descobrir grupos dentro desses clusters.

Em geral, o ML não supervisionado é usado para análises exploratórias. Em alguns casos, os resultados desejados são conhecidos e o único objetivo de usar um algoritmo de aprendizado não supervisionado é encontrar padrões específicos. Em outros casos, pode não haver resultados desejados e o único objetivo de um algoritmo de aprendizado não supervisionado é descobrir padrões ainda não descobertos.
Uma das vantagens do aprendizado de máquina não supervisionado é que ele pode ser usado para tarefas que são difíceis ou impossíveis para os humanos fazerem sozinhos. Por exemplo, o agrupamento de conjuntos de dados pode identificar padrões que ficariam escondidos ao olho humano. Além disso, o aprendizado não supervisionado pode ajudar a aprimorar algoritmos de aprendizado de máquina supervisionado já existentes. Ao usar técnicas de agrupamento em um conjunto de dados, algoritmos supervisionados podem descobrir grupos dentro desses clusters.
Outra vantagem de usar técnicas de ML não supervisionado é que elas podem fornecer insights sobre novas aplicações e problemas. Por exemplo, se um cientista de dados quisesse usar agrupamento em um conjunto de dados de biologia, ele ou ela poderia descobrir que um cluster contém genes que estão associados a uma determinada doença. Isso poderia levar a novas descobertas no campo da biologia.
Apesar das vantagens do aprendizado de máquina não supervisionado, ele ainda é uma área de pesquisa emergente. Há muitos desafios que precisam ser resolvidos antes que o ML não supervisionado possa ser amplamente utilizado. Por exemplo, os algoritmos atuais de aprendizado não supervisionado nem sempre conseguem encontrar todos os padrões desejados em um conjunto de dados. Além disso, algoritmos de aprendizado não supervisionado podem ser lentos e computacionalmente caros.
Apesar disso, o aprendizado de máquina não supervisionado é um campo empolgante que tem o potencial de dar contribuições profundas em muitas áreas de pesquisa diferentes. Com pesquisa e desenvolvimento contínuos, o ML não supervisionado se tornará mais poderoso e amplamente utilizado.
Aprendizado Por Reforço
O Que É Aprendizado Por Reforço?
O último dos tipos é o aprendizado por reforço, que é um tipo de aprendizado de máquina que pode ensinar computadores a executar tarefas recompensando-os por certos comportamentos. O aprendizado por reforço geralmente envolve dar ao computador um ambiente simulado no qual ele possa aprender, tendo como objetivo final fazê-lo completar tarefas no mundo real.
O aprendizado por reforço é uma área de pesquisa de inteligência de máquina que se preocupa com como agentes de software devem tomar ações em um ambiente de modo a maximizar alguma noção de recompensa cumulativa. O sinal de reforço pode ser explícito, como uma "recompensa" entregue após a conclusão da tarefa, ou mais sutil, como uma "punição" após uma ação incorreta; sinais de reforço não se limitam a formas puramente positivas ou negativas, mas a qualquer feedback que informe o comportamento e afete a tomada de decisão futura (por exemplo, se você for elogiado por uma pintura que fez, isso pode levá-lo a ser mais propenso a pintar no futuro).

Como Funciona O Aprendizado Por Reforço?
No aprendizado por reforço, os sinais de reforço geralmente são esparsos, pois no aprendizado por reforço é difícil verificar se um sinal implica reforço ou não. Isso significa que os algoritmos de aprendizado por reforço muitas vezes precisam assumir que os sinais de reforço que recebem são sinais de reforço válidos e, portanto, aprender uma função de valor que visa maximizar uma soma ponderada de estimativas de recompensas futuras em vez de apenas a recompensa imediata. No caso em que essa suposição não se sustenta, algoritmos de Aprendizado Por Reforço tentarão maximizar recompensas futuras esperadas com desconto.
Um dos primeiros métodos de aprendizado por reforço, desenvolvido no início da década de 1960, foi o algoritmo Q-learning. Q-learning é uma técnica de aprendizado por reforço sem modelo que funciona aprendendo uma função de valor-ação ótima (Q) para cada estado em um processo de decisão de Markov (MDP), usando um sinal de reforço para atualizar os valores. O algoritmo começa com uma estimativa de Q(s) para cada estado s e, em seguida, atualiza iterativamente essas estimativas usando um sinal de reforço r(s,a) que indica quão boa ou ruim foi a ação tomada no estado s. Em outras palavras, o Q-learning tenta aprender uma política que mapeia estados do mundo para a melhor ação a ser tomada nesses estados.
No aprendizado por reforço, às vezes podemos definir Transfer Learning como um método de aprendizado por reforço em que um agente aprende com sua experiência passada sem interações humanas. Punição envolve reduzir a recompensa, por exemplo, matar ou enviar algo de volta ao remetente. Recompensa envolve aumentar a recompensa, por exemplo, apertar o botão de play em um reprodutor de mídia (isso é baseado no seu ambiente)
Quais São Algumas Aplicações Do Aprendizado Por Reforço?
O aprendizado por reforço pode ser aplicado no desenvolvimento de jogos para quebra-cabeças baseados em reforço como Sokoban e jogos de estratégia em tempo real como Age of Empires II: The Age Of Kings; ele também pode ser usado em questões de negócios como recrutamento e alocação de funcionários (sistemas de recomendação), controle de agentes de software e controle de robôs.

Na figura acima, o nó amarelo da camada de entrada representa um neurônio que está recebendo uma entrada de uma camada anterior. Cada um desses neurônios pode ter pesos (in1, in2, in3) aplicados a ele antes de serem passados adiante como um sinal, e a soma ponderada das entradas para esse neurônio ativará um ou mais nós na próxima camada. Esse processo se repete a cada camada sucessiva até que tenhamos determinado nosso valor de saída. Como você pode ver, isso torna muito fácil representar regras de tomada de decisão complexas usando algoritmos derivados matematicamente (embora fazê-los funcionar corretamente seja outra questão).
Para que as ANNs aprendam, elas precisam receber uma quantidade enorme de informações chamada conjunto de treinamento. Quando você está tentando ensinar a uma ANN como diferenciar um gato de um cachorro, o conjunto de treinamento forneceria milhares de imagens rotuladas como cachorro para que a rede começasse a aprender. Depois que tiver sido treinada com uma quantidade significativa de dados, ela tentará classificar dados futuros com base no que acha que está vendo (ou ouvindo, dependendo do conjunto de dados) ao longo das diferentes unidades. Durante o período de treinamento, a saída da máquina é comparada à descrição fornecida por humanos sobre o que deveria ser observado. Se forem iguais, a máquina é validada. Se estiver incorreta, ela usa retropropagação para ajustar seu aprendizado — voltando pelas camadas para ajustar a equação matemática. Conhecido como aprendizado profundo, é isso que torna uma rede inteligente.
Normalmente, Redes Neurais Profundas requerem recursos computacionais bastante poderosos para serem treinadas e implantadas. No entanto, recentemente, surgiu um ramo de ML na Borda ou Aprendizado de Máquina Embarcado chamado TinyML — ele representa uma técnica ou campo de estudo em aprendizado de máquina e sistemas embarcados que explora quais aplicações de aprendizado de máquina (uma vez reduzidas, otimizadas e integradas) podem ser executadas em dispositivos tão pequenos quanto microcontroladores.
Existem muitos outros algoritmos de Machine learning que podem ser usados para diferentes tarefas. É importante escolher o algoritmo certo para o trabalho e não tentar forçar um algoritmo de Machine learning a fazer algo para o qual ele não foi projetado. Isso pode resultar em baixa precisão de classificação ou previsões incorretas.
Introdução ao Deep Learning
Esta seção oferece uma visão geral em nível muito alto de deep learning, especificamente no que diz respeito às Redes Neurais Artificiais, às quais daqui em diante nos referiremos brevemente como Redes Neurais. Uma rede neural artificial (ANN) é um sistema computacional modelado a partir do cérebro.
O Que São Redes Neurais?
Em geral, redes neurais são uma ferramenta poderosa para entender e prever padrões complexos em dados. Elas são compostas por um grande número de nós de processamento interconectados, ou neurônios, que podem aprender a reconhecer padrões de dados de entrada. Você tem um conjunto de nós chamados de neurônios de entrada, seguido por toda uma coleção de camadas ocultas que, em última instância, culminam em alguma camada de saída que ajuda a tomar decisões informadas. Com os dados certos, redes neurais podem ser treinadas para aprender e fazer previsões surpreendentemente precisas. No entanto, elas também são muito intensivas em termos computacionais e podem ser difíceis de treinar. Além disso, as redes neurais costumam ser opacas em sua tomada de decisão, o que pode ser um problema ao tentar explicar suas previsões para humanos. Apesar disso, redes neurais são uma ferramenta poderosa que pode ser usada com grande efeito quando aplicada ao problema certo.

Redes neurais são uma ferramenta poderosa para entender e prever padrões complexos em dados. No entanto, elas também são muito intensivas em termos computacionais e podem ser difíceis de treinar. Além disso, as redes neurais costumam ser opacas em sua tomada de decisão, o que pode ser um problema ao tentar explicar suas previsões para humanos. Apesar disso, redes neurais são uma ferramenta poderosa que pode ser usada com grande efeito quando aplicada ao problema certo.
O Que É Treinamento Em Deep Learning?
Para treinar uma rede neural, você precisa fornecer a ela um conjunto de dados de treinamento e um conjunto de parâmetros que determinam como a rede irá aprender. O conjunto de dados de treinamento contém um conjunto de dados de entrada junto com a saída desejada para cada ponto de dado. A rede neural usará esses dados para aprender a reconhecer padrões nos dados de entrada e produzir a saída correta. Os parâmetros que você precisa definir dependerão do tipo de rede neural que está utilizando, mas normalmente incluem a taxa de aprendizado, o número de iterações e o tamanho da camada oculta.
Os pesos de treinamento em aprendizado de máquina desempenham um papel crítico no sucesso de um algoritmo de aprendizado de máquina. Os pesos que ficam na interseção dos neurônios (arestas) determinam quanta influência cada entrada tem sobre a saída do modelo de aprendizado de máquina. Para obter os melhores resultados, é importante escolher os pesos corretos para o seu conjunto de dados. Um método comum para determinar os pesos corretos é chamado de regra delta. A regra delta é uma fórmula matemática que calcula o erro entre a saída prevista e a saída real. Esse erro é então usado para ajustar os pesos do algoritmo de aprendizado de máquina.

Existem várias outras maneiras de treinar modelos de aprendizado de máquina, mas a abordagem mais popular é usar uma técnica chamada retropropagação. Retropropagação é um tipo de algoritmo de treinamento usado para treinar redes neurais. Ele funciona propagando o gradiente de erro para trás através da rede, para que os pesos possam ser atualizados a fim de reduzir o erro. A retropropagação é uma forma eficiente de treinar redes neurais e mostrou-se bem-sucedida em uma variedade de tarefas. Um dos benefícios da retropropagação é que ela pode ser usada para treinar redes neurais com múltiplas camadas. Isso acontece porque o gradiente de erro é propagado para trás por todas as camadas da rede, de modo que todos os pesos possam ser atualizados. A retropropagação também é relativamente fácil de implementar, o que a torna uma escolha popular para treinar redes neurais.

Existem, porém, algumas desvantagens na retropropagação. Uma é que pode ser lenta para treinar grandes redes neurais. Outra é que a retropropagação às vezes pode ser instável, o que significa que os pesos podem divergir em vez de convergir. Por fim, a retropropagação exige acesso aos dados de treinamento para funcionar, o que pode ser um problema se os dados não estiverem prontamente disponíveis. Apesar dessas desvantagens, a retropropagação ainda é uma escolha popular para treinar redes neurais porque é um algoritmo eficiente e relativamente fácil de usar. Se você estiver interessado em treinar sua própria rede neural, então a retropropagação pode ser uma boa escolha para você.
O que é Inferência em Deep Learning?
Inferência em aprendizado de máquina é o processo de usar um modelo de aprendizado de máquina já treinado para fazer previsões em novos dados. Em geral, existem dois tipos de inferência em aprendizado de máquina: online e em lote. Inferência online é o processo de fazer previsões em novos dados à medida que eles chegam, enquanto inferência em lote é o processo de calcular previsões para um grande lote de dados de uma só vez. Redes neurais são bem adequadas para inferência online porque podem fazer previsões muito rapidamente. Isso é importante para tarefas como reconhecimento facial, em que é preciso identificar um rosto em tempo real. A inferência em lote também é importante para muitas aplicações, como previsão do mercado de ações e previsão do tempo, em que é necessário fazer previsões para um grande número de pontos de dados de uma só vez.
O Ciclo de Vida do Aprendizado de Máquina
O Ciclo de Vida de Aprendizado de Máquina é definido como um processo cíclico que envolve um processo de três fases (desenvolvimento do pipeline, fase de treinamento e fase de inferência) executado pelo cientista de dados e pelos engenheiros de dados para desenvolver, treinar e disponibilizar os modelos usando a enorme quantidade de dados envolvidos em várias aplicações como robótica, sistemas de reconhecimento de fala, otimização de mecanismos de busca (SEO), medicina, finanças e assim por diante. O objetivo deste artigo é fornecer uma compreensão aprofundada do ciclo de vida do aprendizado de máquina e sua importância na área de ciência de dados.
A primeira fase do ciclo de vida de aprendizado de máquina é a fase de desenvolvimento do pipeline. Nessa fase, o cientista de dados e o engenheiro de dados trabalham juntos para desenvolver um pipeline de processamento de dados que possa ser usado para adquirir, limpar, processar e pré-treinar os conjuntos de dados. O principal objetivo dessa fase é garantir que os conjuntos de dados estejam prontos para o treinamento e a inferência. A segunda fase é a fase de treinamento, em que os modelos são realmente treinados usando os conjuntos de dados. Essa fase exige muito tempo e esforço, pois envolve experimentar diferentes algoritmos e parâmetros para encontrar o melhor modelo que possa ser usado para previsão. A última fase é a fase de inferência, em que os modelos são colocados em uso para fazer previsões. Nessa fase, o cientista de dados e o engenheiro de dados trabalham juntos para implantar os modelos em produção e garantir que estejam funcionando corretamente.
O ciclo de vida de aprendizado de máquina é importante porque ajuda o cientista de dados e o engenheiro de dados a desenvolver, treinar e disponibilizar os modelos usando a enorme quantidade de dados envolvida em várias aplicações. Ele também os ajuda a evitar armadilhas comuns que podem ocorrer durante as fases de treinamento e inferência. O ciclo de vida de aprendizado de máquina é um processo cíclico, o que significa que pode ser repetido várias vezes para melhorar a precisão dos modelos. Assim, é uma ferramenta essencial para qualquer pessoa que queira se tornar um cientista de dados ou engenheiro de dados.
O fluxo de trabalho de praticamente qualquer aprendizado de máquina pode ser simplificado e resumido seguindo estas etapas:
- Coletar e limpar os dados
- Preparar e configurar os parâmetros
- Treinar o modelo de aprendizado de máquina
- Avaliar o desempenho do modelo de aprendizado de máquina
- Implantar em um ambiente de produção / usar para treinamento adicional, dependendo das circunstâncias.
Embora essas etapas possam parecer simples, elas podem levar uma quantidade significativa de tempo para serem concluídas. Nos próximos capítulos, iremos mais fundo em cada uma dessas diferentes etapas e entender as nuances.
Coleta de Dados
A Coleta de Dados é a primeira etapa do Ciclo de Vida de Aprendizado de Máquina. O cientista de dados e o engenheiro de dados precisam coletar uma enorme quantidade de dados para desenvolver, treinar e disponibilizar os modelos. Os dados estão envolvidos em várias aplicações, como reconhecimento de imagens, análise de vídeo, processamento de linguagem natural, análise preditiva e muitas outras.
Pré-processamento
Pré-processamento é a segunda coisa que o cientista de dados e o engenheiro de dados precisam fazer no Ciclo de Vida de Aprendizado de Máquina. Os dados devem ser limpos e preparados para análise antes de serem alimentados no algoritmo de aprendizado de máquina. O pré-processamento de dados é vital para o aprendizado de máquina porque inclui tarefas como limpeza de dados, exploração de dados, visualização de dados, redução de dados e transformação de dados. Essas tarefas são importantes para o desenvolvimento de modelos de aprendizado de máquina porque eles são frequentemente usados em conjuntos de dados brutos. Depois que os dados forem processados, é hora de escolher um algoritmo. O algoritmo determinará como o computador aprenderá a partir dos dados.
Treinamento
O treinamento em aprendizado de máquina é a terceira etapa do Ciclo de Vida de Aprendizado de Máquina. O processo de treinamento em aprendizado de máquina consiste em duas fases, fase de treinamento e fase de inferência. Um cientista de dados treina um modelo de aprendizado de máquina, que é então usado para prever o resultado em diferentes conjuntos de dados que não estão disponíveis para treiná-lo. O treinamento envolve selecionar uma arquitetura de rede neural que melhor se ajuste à tarefa em questão. Uma vez que o algoritmo tenha sido selecionado, a próxima etapa é configurar os parâmetros da arquitetura da rede neural. Esses parâmetros incluem o número de camadas na rede neural, o tipo de função de ativação e a taxa de aprendizado. Depois que os parâmetros tiverem sido configurados, é hora de treinar o modelo de aprendizado de máquina. Esse processo pode levar muito tempo, dependendo do tamanho e da complexidade do conjunto de dados.
Otimização
Existem várias maneiras pelas quais um modelo de aprendizado de máquina pode ser otimizado: comprimido, podado e quantizado. Compressão é o processo de reduzir o tamanho de um modelo de aprendizado de máquina. Isso é feito eliminando os recursos que não são importantes para a tarefa em questão. Poda é o processo de remover os pesos dos neurônios em um modelo de aprendizado de máquina que não são importantes. Quantização é o processo de converter um número de ponto flutuante em um valor inteiro. Isso é feito para economizar espaço e tempo. Essas otimizações não apenas fazem os modelos rodarem mais rápido, como também ajudam a reduzir os requisitos de consumo de memória no sistema.
Implantação
A fase de implantação é a quarta e última etapa do Ciclo de Vida de Aprendizado de Máquina. Nessa fase, o modelo de aprendizado de máquina é implantado em um ambiente onde pode ser usado para fazer previsões. Isso pode ser na nuvem, on-premise, em dispositivos móveis ou, no nosso caso, em dispositivos minúsculos! Depois que o modelo de aprendizado de máquina foi treinado, ele está pronto para uso em uma das plataformas escolhidas. O modelo pode ser implantado em um ambiente de produção ou usado para treinamento adicional. A etapa final é avaliar o desempenho do modelo de aprendizado de máquina. Isso pode ser feito comparando os resultados previstos com os resultados reais.
Avaliação
Inferência em aprendizado de máquina é o processo de fazer previsões em novos conjuntos de dados usando um modelo de aprendizado de máquina que foi treinado em um conjunto de dados diferente. A inferência é importante porque nos permite usar o modelo de aprendizado de máquina para fazer previsões em conjuntos de dados que não vimos antes. Isso nos ajuda a melhorar nossa compreensão dos dados e do modelo de aprendizado de máquina.
O ciclo de vida de machine learning é um processo cíclico que nos ajuda a transformar dados brutos em insights acionáveis por meio do uso de algoritmos de predição. O ciclo consiste em três fases: (1) coleta de dados, (2) pré-processamento e (3) treinamento de machine learning. O principal objetivo desse ciclo é melhorar a precisão das previsões feitas usando modelos de machine learning.
Sessão de Perguntas e Respostas
P. Quais são as três fases do ciclo de vida de machine learning?
P. Qual fase é a mais importante para gerar previsões precisas?
P. Como podemos avaliar modelos de machine learning?
Coleta de Dados
O que é Coleta de Dados?
Para que um modelo de machine learning seja eficaz, ele precisa ser treinado com dados de alta qualidade. A qualidade dos dados é determinada pela quantidade de variação que eles contêm e pela correção de seus rótulos. Para garantir que um modelo de machine learning seja eficaz, é importante selecionar dados que sejam representativos do problema do mundo real que você está tentando resolver. O processo de reunir e medir informações de inúmeras fontes diferentes é a coleta de dados.
O que é Conjunto de Treinamento?
Conjunto de treinamento é o conjunto de dados usado para treinar modelos de machine learning. São os dados usados para ensinar ao algoritmo o que ele precisa saber para identificar corretamente padrões relevantes em dados não estruturados. A melhor maneira de determinar se seus dados são ou não adequados para um modelo de machine learning é ter um melhor entendimento dos próprios dados. Se você quiser usá-los como combustível de treinamento, então eles precisam atender a várias propriedades-chave:
- Eles devem ser representativos da população da qual foram coletados.
- Deve haver representação equivalente de múltiplas classes (por exemplo, “gatos” vs. “cães”) que possam existir dentro do mesmo grupo de pessoas ou itens sendo estudados. Isso garante que não haja viés nos dados quando o modelo de machine learning estiver fazendo previsões sobre uma classe em detrimento de outra.
- As variáveis em cada item devem ter níveis significativos de mensuração. Isso significa que valores numéricos devem ser atribuídos a categorias discretas, e não o contrário.
O que são Divisões de Conjunto de Treinamento?
O conjunto de treinamento é composto por diferentes partições. Ao particionar dados de machine learning, você precisa separar o conjunto de dados de machine learning em dois conjuntos: um conjunto de treinamento e um conjunto de teste. O algoritmo de machine learning é primeiro treinado no conjunto de treinamento e depois testado no conjunto de teste para ver quão eficaz ele é em prever as variáveis-alvo de interesse. O conjunto de dados de machine learning pode ser particionado usando várias técnicas, incluindo, mas não se limitando a:
- Dividir os dados aleatoriamente em dois conjuntos.
- Dividir os dados usando uma abordagem estratificada para que a distribuição dos dados seja mantida em ambos os conjuntos.
- Usar algoritmos de machine learning para particionar de forma inteligente os dados em dois conjuntos.
A regra geral é a regra 80:10:10. Em 80% dos dados você treina o modelo. Em 10% você valida o treinamento para melhorar sua precisão. E os 10% mantidos em reserva são o que usamos, em última análise, para validar a precisão do modelo de machine learning antes de colocá-lo em produção.
Quais São as Fontes de Conjunto de Treinamento?
Para usar os dados que coletamos no desenvolvimento de soluções práticas de inteligência artificial (IA) e machine learning, eles devem ser coletados e armazenados de uma forma que faça sentido para o problema de negócio em questão e devem ser organizados de maneira eficiente o suficiente para facilitar o acesso rápido quando seu sistema precisar deles. Há três principais fontes de dados:
- Dados Internos
- Dados Públicos
- Dados Externos
Dados internos referem-se aos dados que já estão armazenados dentro da sua organização. Isso pode ser registros de clientes, informações de compra ou informações de produtos. A principal desvantagem de usar dados internos é que eles frequentemente são incompletos e não estão disponíveis em um formato compatível com soluções de machine learning. No entanto, a principal vantagem de usar dados internos é que eles podem ser acessados de forma rápida e fácil.
Dados públicos referem-se a qualquer fonte de dados gratuita disponível na internet. Esses dados normalmente vêm em grandes volumes e podem exigir processamento adicional antes de estarem prontos para uso em um modelo. Um grande cuidado aqui é garantir que você tenha o direito de usar os dados para treinar os modelos. Só porque existem dados gratuitos disponíveis não significa que você possa usá-los, especialmente para fins comerciais.
Os dados públicos que você escolher dependerão do objetivo do seu modelo. Por exemplo, se você estiver tentando prever o resultado de uma eleição, você poderia usar dados públicos como resultados de eleições anteriores ou registros de eleitores. Dados externos são quaisquer dados que você não pode coletar por conta própria – eles podem vir de provedores terceirizados ou de outras empresas que se especializam em fornecer informações para fins de machine learning.
Como Você Consegue Dados de Treinamento Rotulados?
Dados de treinamento rotulados são cruciais para modelos de machine learning supervisionados. Os dados são usados para ensinar ao algoritmo o que ele precisa saber para identificar corretamente padrões relevantes em dados não estruturados. Para obter dados de treinamento rotulados, você precisará coletá-los de uma fonte que esteja disposta a fornecê-los. Há várias maneiras de fazer isso:
- Pesquisas ou experimentos on-line podem ser usados para coletar dados de um grande número de pessoas. Os participantes seriam então convidados a rotular os dados de acordo.
- Os dados também podem vir de plataformas de mídia social como o Twitter, onde os usuários podem marcar tweets com palavras-chave ou hashtags específicas.
- Bancos de dados de itens que foram pré-rotulados podem ser usados como fonte de dados de treinamento. Isso é frequentemente feito por empresas especializadas em anotação e rotulagem de dados.
Como Você Pode Saber se Seu Conjunto de Dados é Adequado para um Modelo de Machine Learning?
A melhor maneira de determinar se seus dados são ou não adequados para um modelo de machine learning é ter um melhor entendimento dos próprios dados. Se você quiser usá-los como combustível de treinamento, então eles precisam atender a várias propriedades-chave:
- Eles devem ser representativos da população da qual foram coletados.
- Deve haver representação equivalente de múltiplas classes que possam existir dentro do mesmo grupo de pessoas ou itens sendo estudados. Isso garante que não haja viés em nenhuma classe em relação a outra e que os resultados sejam mais precisos ao prever a probabilidade de algo com base em suas características.
- As variáveis em cada item devem ter níveis significativos de mensuração. Isso significa que valores numéricos devem ser atribuídos a categorias discretas, e não o contrário.
Quais são os Diferentes Tipos de Dados?
Existem dois tipos de dados – estruturados e não estruturados. Dados estruturados são dados organizados em tabelas ou grades. Esse tipo de dado é fácil de processar e é usado para treinar modelos de machine learning que usam algoritmos de aprendizado supervisionado. Dados não estruturados são dados que não estão organizados em nenhum formato específico. Esse tipo de dado é difícil de processar e é usado para treinar modelos de machine learning que usam algoritmos de aprendizado não supervisionado.
Pré-processamento
O que é Pré-processamento de Dados?
Depois de reunir seus dados, o próximo passo é limpá-los e prepará-los para uso em seu modelo de machine learning. Esse processo é conhecido como pré-processamento de dados. O objetivo do pré-processamento de dados é deixar os dados prontos para modelagem, removendo variações indesejadas e preenchendo valores ausentes.
As etapas de pré-processamento que você escolher dependerão do tipo de dado que está usando e da abordagem que planeja adotar em seu modelo. Por exemplo, se seus dados contiverem uma grande proporção de valores ausentes (isto é, atributos ausentes como idade ou gênero), pode ser possível extrapolar as informações faltantes a partir de outras informações disponíveis. Isso reduzirá a quantidade de dados ausentes e permitirá que você inclua mais registros em seu modelo.
O que Está Envolvido no Pré-processamento de Dados?
De modo geral, há algumas etapas envolvidas no pré-processamento de dados: primeiro, os dados precisam ser limpos e preparados para análise. Isso inclui eliminar quaisquer outliers, ruídos ou dados incompletos. Em seguida, os dados precisam ser transformados em uma forma adequada para algoritmos de machine learning. Isso geralmente envolve converter os dados em forma numérica e extrair características relevantes. Por exemplo, podemos converter sinais de áudio em imagens para entender os dados de áudio. É assim, na verdade, que a maioria dos algoritmos de “Keyword Spotting” funciona. Ao transformar dados de machine learning em um formato numérico, recomenda-se que você use técnicas de contagem ou de agrupamento em faixas (binning). Essas duas técnicas podem ser aplicadas tanto a dados categóricos quanto numéricos. A contagem é usada quando há um número limitado de valores para cada característica, enquanto o binning é usado quando há um grande número de valores para cada característica. Por fim, os dados precisam ser particionados em conjuntos de treinamento e de teste. O conjunto de treinamento é usado para treinar o algoritmo de machine learning, e o conjunto de teste é usado para avaliar o desempenho do algoritmo.
Qual é a Importância do Pré-processamento de Dados?
O pré-processamento de dados é importante porque ajuda a garantir que o algoritmo de machine learning seja treinado em dados que são representativos do mundo real. Ao limpar e transformar os dados, podemos remover qualquer ruído ou viés que possa existir neles. Isso ajuda a melhorar a precisão do algoritmo de machine learning. Além disso, o pré-processamento de dados também pode ajudar a melhorar o desempenho, extraindo características úteis dos dados. Ao identificar e extrair as características mais importantes, podemos reduzir a quantidade de dados que precisa ser processada pelo algoritmo de machine learning. Isso pode levar a um desempenho melhor e a tempos de execução mais rápidos. Por fim, particionar os dados em conjuntos de treinamento e de teste nos permite avaliar o desempenho dos algoritmos de machine learning. Ao testar o algoritmo de machine learning em dados que ele não viu antes, podemos ver quão bem e com que precisão ele atua. Usamos os resultados desse teste para determinar se nosso modelo de machine learning é eficaz ou não.
A primeira etapa no pré-processamento de dados é limpar a entrada. Isso envolve remover ruídos e outliers dos dados, formatá‑los adequadamente para consumo pela máquina e realizar quaisquer transformações necessárias. Ruído pode ser causado por valores de dados incorretos ou inconsistentes, enquanto outliers são valores que estão muito distantes do restante do conjunto de dados.
Em seguida, os dados devem ser explorados para obter uma melhor compreensão do que eles contêm. Isso pode ser feito visualizando os dados e realizando quaisquer extrações ou transformações necessárias com base em insights obtidos ao observar os dados. O algoritmo de aprendizado de máquina deve ser capaz de fazer uso do que foi aprendido durante a exploração dos dados.
Por fim, quando tudo isso estiver concluído, o aprendizado de máquina pode acontecer. Isso envolve treinar um modelo de aprendizado de máquina com os dados limpos e transformados para criar um modelo preditivo que possa então ser usado para fazer previsões sobre novos valores de entrada, como qual produto venderá melhor no próximo mês ou se alguém irá ou não deixar de pagar seu empréstimo.
Se você quer incluir uma grande proporção da população em seus modelos preditivos, mas possui pouquíssimos exemplos de alguns grupos minoritários, outra opção é usar técnicas estatísticas como oversampling ou undersampling para criar um conjunto de dados balanceado. Oversampling envolve criar um número adicional de registros para um grupo minoritário selecionando aleatoriamente outros registros da população. Undersampling, por outro lado, envolve remover um número de registros de um grupo minoritário para torná‑lo mais representativo da população maior.
Quando seus dados estiverem prontos, você pode começar a treinar seu modelo de aprendizado de máquina. Esse processo envolverá selecionar um algoritmo e configurá‑lo para mapear os dados em uma solução, escolhendo uma função de perda apropriada e uma métrica de acurácia. Falaremos mais sobre isso em breve.
A etapa final no aprendizado de máquina é avaliar seu modelo, o que envolve executar previsões do mundo real em relação aos dados históricos coletados anteriormente. Isso permitirá testar o quão bem seu modelo aprendeu a partir dos dados de treinamento e garantir que ele se generalize bem para novos dados.
Extração de Características
A extração de características é uma etapa importante no processo de aprendizado de máquina. Ela é usada para identificar um subconjunto de características que são mais preditivas para a tarefa em questão. Esse subconjunto é então usado para criar modelos de classificação ou regressão com melhor precisão preditiva do que os modelos criados usando todas as características disponíveis.
Há vários algoritmos diferentes que podem ser usados para extração de características. Alguns algoritmos comuns incluem:
- Principal Component Analysis (PCA)
- Linear Discriminant Analysis (LDA)
- Support Vector Machines (SVM)
- Random Forest
Cada um desses algoritmos tem seus próprios pontos fortes e fracos. O melhor algoritmo para uma determinada tarefa dependerá do tipo de dado e do problema que está sendo resolvido.
Depois que o subconjunto de características tiver sido identificado, ele deve ser selecionado. O subconjunto de características usado para criar o modelo final não deve ser influenciado por qual algoritmo gera a melhor precisão preditiva. Os algoritmos sempre produzirão diferentes mapeamentos mostrando quão importante cada característica é para prever a tarefa em questão. Isso pode tornar difícil selecionar um subconjunto de características que se acredita ser o melhor sem primeiro saber qual algoritmo será usado para modelagem.
Depois que um algoritmo tiver sido escolhido, uma técnica comum para escolher um subconjunto de características é chamada de seleção por regularização. Uma função de otimização aleatória baseada em utilidade é construída usando medidas de desempenho calculadas a partir de subgrupos maiores contendo subconjuntos com progressivamente menos atributos (características). O processo continua até que restem apenas atributos suficientes em cada subgrupo para modelar a tarefa.
Depois que um subconjunto de características tiver sido identificado, ele deve ser usado para criar modelos que produzam melhor precisão preditiva do que os modelos criados usando todas as características disponíveis. Isso nem sempre é fácil porque há muitos algoritmos diferentes para criar modelos preditivos, e cada algoritmo usa diferentes subconjuntos de características disponíveis para fazer suas previsões. A melhor maneira de comparar resultados entre diferentes algoritmos de aprendizado de máquina é usando uma métrica de avaliação que possa ser calculada em vários tipos diferentes de modelos. Métricas de desempenho comuns incluem erro de treinamento, erro de teste, área sob a curva (AUC), altura do gráfico de lift, área sob a curva do gráfico de lift (AUAC), pontuação de log loss, coeficiente de correlação de Matthews (MCC) e área sob a curva ROC (ROC AUC).
A extração de características é um conceito simples que nem sempre tem um caminho claro para implementação. Existem muitos algoritmos diferentes para extração de características, e cada um deles tem seus próprios pontos fortes e fracos. Além disso, as melhores características a serem usadas geralmente dependem de qual algoritmo será usado para classificação ou regressão. Para escolher boas características, é importante primeiro selecionar uma tarefa de aprendizado de máquina apropriada e uma métrica de avaliação. Depois que essas decisões forem tomadas, uma técnica comum para escolher um subconjunto de características é chamada de seleção por regularização. O processo de engenharia de características não pode começar até que essas três etapas tenham sido concluídas com sucesso.
A engenharia de características é uma etapa importante no processo de aprendizado de máquina cujo objetivo é identificar e selecionar um subconjunto de características, dentre um conjunto, que sejam mais preditivas para a tarefa em questão.
Treinamento de Modelo
A primeira etapa do treinamento de um modelo de aprendizado de máquina é selecionar o conjunto de dados correto. Esse conjunto de dados é tipicamente a entrada do modelo, com base nas etapas anteriores de coleta de dados, pré‑processamento e extração de características que abordamos nos capítulos anteriores. A segunda etapa do treinamento de um modelo de aprendizado de máquina é arquitetar seus parâmetros internos e arquitetura de rede.
Selecionando um Conjunto de Dados de Treinamento
Ao selecionar um conjunto de dados para treinar um modelo de aprendizado de máquina, é importante considerar alguns fatores:
1.Propósito do modelo
A primeira pergunta que você precisa se fazer é qual é o propósito do modelo de aprendizado de máquina. O que você está tentando prever ou identificar? Depois que você souber isso, poderá começar a procurar um conjunto de dados que seja representativo da população que está estudando.
2.Tamanho e complexidade do conjunto de dados
O tamanho e a complexidade do conjunto de dados são outra consideração importante. O conjunto de dados deve ser grande o suficiente para conter uma variedade de itens, com cada item contendo várias variáveis que podem ser usadas para modelagem. Quanto mais complexo o conjunto de dados, mais tempo e recursos serão necessários para treinar o modelo de aprendizado de máquina.
3.Disponibilidade de dados
Outra coisa que você precisa considerar é se os dados estão ou não disponíveis. Se você estiver trabalhando com dados proprietários, provavelmente precisará de permissão do proprietário antes de poder usá‑los. Conjuntos de dados disponíveis publicamente podem ser encontrados online ou entrando em contato com a organização que coletou os dados.
4.Rotulagem dos dados
Um dos aspectos mais importantes dos dados de treinamento é que eles devem ser rotulados. Dados rotulados significam que as variáveis de entrada de cada item receberam um valor numérico ou categórico. Isso permite que o modelo de aprendizado de máquina identifique padrões e faça previsões com base no que aprendeu durante o treinamento. Quanto mais itens houver em seu conjunto de treinamento, melhor o modelo irá performar ao fazer previsões em tempo real sobre novos dados.
5.Relacionamentos lineares vs não lineares
Outra coisa que você precisa considerar é se existem ou não relacionamentos lineares e, em caso afirmativo, quantas variáveis independentes e dependentes existem para cada item no conjunto de treinamento. Por exemplo: se você estiver estudando pessoas, então o peso pode ser um indicador da altura (que também pode indicar idade). Então, nesse caso, há apenas uma variável dependente (altura) e uma variável independente (peso). No entanto, se você estiver estudando carros, então peso e velocidade podem ser duas variáveis independentes que têm um relacionamento linear. Isso significa que, à medida que o peso aumenta, a velocidade provavelmente também aumentará.
6.Tipo de algoritmo
O tipo de algoritmo de aprendizado de máquina que você escolher também afetará o conjunto de dados que você usa para treinamento. Alguns algoritmos são mais adequados para trabalhar com dados categóricos, enquanto outros lidam melhor com dados numéricos. Você precisará selecionar um algoritmo que seja compatível com o tipo de dado com o qual está trabalhando.
7.Disponibilidade de recursos
A última coisa que você precisa considerar é quanto tempo e recursos são necessários para treinar o modelo de aprendizado de máquina. Quanto mais dados você tiver, melhor o modelo irá performar. No entanto, se você não tiver dados suficientes para treinar o modelo, também poderá suplementá‑los com dados sintéticos. Dados sintéticos são dados criados artificialmente para se assemelhar ao conjunto de dados do mundo real. Isso pode ser útil em casos em que não há dados originais suficientes disponíveis para treinamento.
Em resumo, ao selecionar um conjunto de dados para aprendizado de máquina, é importante garantir que:
- Os dados sejam representativos da população da qual foram coletados.
- Haja representações iguais de múltiplas classes que possam existir dentro do mesmo grupo de pessoas ou itens sendo estudados. Isso garante que não haja viés nos dados quando o modelo de aprendizado de máquina estiver fazendo previsões sobre uma classe em detrimento de outra.
- O tamanho e a complexidade do conjunto de dados sejam apropriados para o tipo de algoritmo de aprendizado de máquina que você está usando.
- Os dados sejam rotulados para que o modelo de aprendizado de máquina possa identificar padrões.
- Os dados estejam formatados de uma forma que seja compatível com o algoritmo que você está usando.
- Haja recursos suficientes disponíveis para treinar o modelo.
- O conjunto de dados seja grande o suficiente para conter uma variedade de itens, com cada item contendo várias variáveis.
- Não existem relações lineares entre mais de duas variáveis independentes. Se houver relações lineares, então elas devem ser simples (ou seja, ter poucas variáveis independentes).
- Você tem uma ideia do que está tentando fazer ou identificar para que possa encontrar um conjunto de dados apropriado.
A melhor maneira de encontrar um conjunto de dados apropriado é saber o que você está tentando realizar. Assim que tiver uma ideia geral, você pode buscar conjuntos de dados que sejam publicamente disponíveis e adequados para aprendizado de máquina. Há também muitos recursos online que podem ajudar você a encontrar o conjunto de dados certo para suas necessidades. Por exemplo, o UCI Machine Learning Repository é um site que contém uma grande coleção de conjuntos de dados públicos que podem ser usados para aprendizado de máquina. É importante observar que nem todos os conjuntos de dados são adequados para todo tipo de algoritmo de aprendizado de máquina. Portanto, certifique-se de selecionar um algoritmo que seja compatível com o conjunto de dados que você está usando.
O uso de modelos de aprendizado de máquina explodiu nos últimos anos em parte devido à crescente disponibilidade de dados. Entretanto, o verdadeiro vencedor na indústria de aprendizado de máquina são os próprios dados. Não se trata mais apenas de fazer previsões; é também uma ferramenta importante que pode nos ajudar a entender melhor como o mundo funciona e a tomar decisões melhores com base nessas informações.
Quanto mais dados você tiver, melhor será o desempenho do seu modelo. Mas, se você não tiver dados suficientes para treinar um modelo de aprendizado de máquina, pode fornecer dados sintéticos para ele trabalhar em vez de dados do mundo real (o que seria praticamente impossível). Outra abordagem é usar um conjunto menor de dados de treinamento rotulados e combiná-lo com algumas técnicas de aprendizado não supervisionado. Isso permite escolher quais variáveis entram na criação do modelo final, ainda utilizando dados não estruturados.
É importante ter dados suficientes quando você está treinando um modelo de aprendizado de máquina. Porém, às vezes simplesmente não há dados originais suficientes disponíveis para trabalharmos. Nesses casos, podemos recorrer a dados sintéticos, que são dados criados artificialmente para se assemelhar ao conjunto de dados do mundo real com o qual estamos trabalhando. Isso pode ser útil em casos em que não há dados originais suficientes para treinamento ou se quisermos melhorar a precisão de nossas previsões. Este é um tópico relativamente avançado que deixaremos para outra ocasião, talvez em outro livro.
Arquiteturas de Redes Neurais
Existem algumas arquiteturas de redes neurais diferentes que são comumente usadas em deep learning. Convolutional Neural Networks (CNNs), células Long Short Term Memory (LSTM), redes neurais recorrentes (RNNs) e Convolutional Restricted Boltzmann Machine (CBRMs) são algumas das mais comuns. Cada um desses diferentes tipos de redes neurais tem seus próprios pontos fortes e fracos e pode ser usado para propósitos diferentes. Nesta seção, abordaremos as arquiteturas de redes neurais mais amplamente utilizadas para que você tenha uma base para começar a usá-las.
Perceptron Multicamadas (MLP)
Redes neurais Perceptron Multicamadas (MLP) são um tipo de rede neural usado em deep learning. Elas são um tipo de rede neural simples, porém poderoso, que pode ser usado para treinar modelos complexos. Redes MLP consistem em diversas camadas, cada uma das quais consiste em um certo número de neurônios. Os neurônios na primeira camada são conectados aos neurônios na segunda camada e assim por diante. Perceptrons multicamadas são o tipo mais comum de rede neural usada em deep learning. Perceptrons multicamadas podem ser usados para resolver uma ampla gama de tarefas, incluindo regressão e classificação. Redes Perceptron Multicamadas alcançam alta precisão preditiva quando possuem muitas camadas ocultas e muitos neurônios por camada; no entanto, elas não escalam muito bem com o aumento do número de exemplos de treinamento e exigem ajuste de seus hiperparâmetros, o que as torna difíceis de treinar. Perceptrons multicamadas foram inicialmente introduzidos na década de 1960 por pesquisadores da Universidade de Stanford e mais tarde popularizados por David Rumelhart, Geoffrey Hinton e Ronald Williams em 1986 [1].
Arquitetura do Perceptron Multicamadas
Um Perceptron Multicamadas é organizado em três grupos de camadas: uma camada de entrada, uma ou mais camadas ocultas (também chamadas de "unidades ocultas" ou "camada de extração de características") e uma camada de saída. Cada camada é totalmente conectada à próxima camada.
O Perceptron Multicamadas consiste em um certo número de entradas x1, x2, ....xn para cada exemplo de treinamento, uma ou mais unidades ocultas h1, h2...hn dependendo do número de camadas ocultas e nenhuma saída (ou 1 saída representando o rótulo da classe). Aprende-se os pesos ótimos W1 ,W2 ...Wm para essa arquitetura minimizando alguma função de erro usando gradiente descendente.
Observe que Perceptrons Multicamadas são aproximadores universais de funções, que podem aproximar qualquer função dado um número suficiente de unidades ocultas. Perceptrons Multicamadas têm sido usados em muitas aplicações, incluindo diagnóstico médico [2], reconhecimento de escrita manual [3][4] e tradução automática [5]. Perceptrons multicamadas também são populares em robótica. Perceptrons multicamadas foram inicialmente usados apenas para aprendizado supervisionado, mas agora são usados principalmente para aprendizado não supervisionado, como em deep belief networks (DBNs) e deep Boltzmann machines (DBMs).
Treinando Redes Perceptron Multicamadas
O algoritmo de treinamento do Perceptron Multicamadas é simples por design; ele funciona começando com os pesos de rede aleatórios W1, W2...Wm e depois os atualiza iterativamente para reduzir alguma função de erro definida E em um conjunto de treinamento consistindo em pares de entrada-saída (x1,y1) ,(x2,y2),....(xn,yn). Esta é uma abordagem de aprendizado supervisionado em que a rede é treinada para prever os rótulos de classe corretos y.
O algoritmo de Perceptron Multicamadas usado para treinamento possui duas fases:
- Fase de Propagação Direta (Forward): A saída de cada neurônio na primeira camada oculta é calculada usando a regra de sinal, de modo que os neurônios computam f = sgn (w1inputs+b1)+sgn (w2hiddens+b2)+...+sgn(wm+bm) e então aplicamos uma função de ativação como a sigmoide. Isso nos dá níveis de atividade sináptica para cada conexão entre neurônios e permite que os neurônios na próxima camada sejam ativados.
- Fase de Retropropagação (Backward): Nesta fase, levamos em conta os rótulos de classe reais y e damos uma atualização de peso maior para exemplos que são classificados corretamente. Calculamos uma função de erro E para cada neurônio na camada oculta com base nas diferenças entre esses valores e a propagamos de volta por todos os neurônios. Em seguida, aprendemos Wm+1 a partir desse erro usando uma regra de gradiente descendente como Wm+1 = Wm -(taxa de aprendizado)*parcial E/parcial wm [6].
O algoritmo de Perceptron Multicamadas não possui nenhum critério de parada embutido; entretanto, muitos experimentos param quando observam que treinamento adicional tem apenas um impacto mínimo no desempenho ou na estabilidade da rede, isto é, quando treinamento adicional reduz o erro quadrático médio – ocorreu overfitting.
Perceptrons Multicamadas em Deep Learning
Os Perceptrons Multicamadas também são conhecidos como redes neurais feed-forward porque não possuem ciclos em seu grafo de conexões; no entanto, Perceptrons Multicamadas com mais de uma camada oculta são frequentemente chamados de Perceptrons Multicamadas de deep learning (MLP), o que nos permite generalizar o algoritmo de Perceptron Multicamadas para redes com muitas camadas e milhões de parâmetros. Uma rede feed-forward profunda é composta empilhando múltiplas camadas umas sobre as outras, resultando em uma arquitetura de rede muito larga, mas rasa. Perceptrons Multicamadas de deep learning podem ser treinados com diversos algoritmos de otimização diferentes, como gradiente descendente, gradiente conjugado ou métodos quasi-Newton.
Redes Neurais Convolucionais
Redes neurais convolucionais (CNNs) são um tipo de rede neural que tem sido usado em aplicações de visão computacional, reconhecimento de imagens e detecção de objetos. Elas são usadas para identificar pequenos aspectos de uma imagem comparando-a com outras imagens sobre as quais o programa aprendeu. Redes neurais convolucionais são geralmente compostas de 3 camadas principais:
- Camada convolucional
- Camada de pooling
- Camada totalmente conectada
A camada Convolucional é onde o programa reconhece padrões na imagem, comparando-a com outras imagens em seu banco de dados. Se houver uma diferença significativa entre as características na imagem atual e o que o programa aprendeu, então ele avança para a próxima seção da Camada Convolucional. Embora as redes neurais convolucionais sejam em grande parte responsáveis pelos avanços em visão computacional, elas continuam a melhorar com diferentes tipos de Redes Neurais Convolucionais, como Deep Convolutional Neural Networks (DCNNs) e Convolutional Restricted Boltzmann Machine (CBRMs).
Redes neurais convolucionais aprendem com a experiência. Redes neurais convolucionais são compostas de múltiplas camadas em que cada camada tem um número diferente de neurônios chamado filtro. Para que a rede aprenda, cada camada é apresentada a um conjunto de treinamento no qual ela se treina para reconhecer padrões. Quanto mais dados de treinamento você tiver, mais precisa será sua rede neural convolucional na detecção dos padrões dentro desses dados. Redes neurais convolucionais também usam um mecanismo feedforward que passa os dados adiante por muitas camadas e então mede quão próximas suas previsões estão dos rótulos associados aos dados.
Para alcançar o nível desejado de precisão para sua Rede Neural Convolucional, você precisará criar um conjunto de treinamento para ela, mantendo-se fiel a um conjunto definido de dados. A Rede Neural Convolucional então aprenderá como detectar padrões com precisão a partir desses dados. Isso é feito ajustando os valores dos filtros dentro da Rede Neural Convolucional para minimizar o erro entre suas previsões e os rótulos associados aos dados. Você também pode usar backpropagation para ajudar a treinar sua Rede Neural Convolucional. A backpropagation ajuda Redes Neurais Convolucionais a aprender mais rápido, enviando de volta para as camadas anteriores informações sobre o quão bem ela se saiu em cada camada. Isso permite que cada camada ajuste seus filtros de forma adequada para que a Rede Neural Convolucional possa aprender com seus erros e melhorar sua precisão.
Redes Neurais Recorrentes
Redes Neurais Recorrentes (RNNs) são um tipo de rede que identifica padrões em imagens ou texto usando informações de estado de partes anteriores na sequência para influenciar previsões futuras sobre onde ela deve olhar em seguida. As RNNs têm sido usadas em aplicações como o serviço de tradução do Google e tecnologia de reconhecimento de fala. Convolutional Restricted Boltzmann Machine (CBRMs), Deep Convolutional Neural Networks (DCNNs), etc. são alguns tipos de Redes Neurais Convolucionais que usam Redes Neurais Recorrentes em seu núcleo.
Células de Long short term memory (LSTM) são um tipo de rede neural recorrente usada para identificar padrões e tendências em sequências de dados. As células LSTM fazem isso comparando novos padrões com aqueles que foram aprendidos anteriormente e então levando em conta informações de estado anteriores ao fazer previsões futuras. Embora redes neurais recorrentes existam há anos, as células de Long Short Term Memory são em grande parte responsáveis por tornar as redes neurais recorrentes mais poderosas.
Transformers
Redes neurais transformer são redes neurais que usam um algoritmo de deep learning chamado transformer para aprender como fazer inferências em novos conjuntos de dados. O transformer é uma rede neural composta de duas partes principais: o codificador (encoder) e o decodificador (decoder). O codificador recebe os dados de entrada e os transforma em um vetor de números. O vetor é então passado pelo decodificador, que reconstrói os dados de entrada.
A arquitetura de rede neural transformer foi proposta pela primeira vez pelo Google em 2017 e tem se mostrado mais eficaz do que outras arquiteturas de rede neural como a rede neural profunda e a rede neural recorrente. Redes neurais transformer têm se mostrado muito eficazes em processamento de linguagem natural, que é um ramo da inteligência artificial que busca criar máquinas que possam processar e aprender com línguas humanas como o inglês. Uma rede neural como a rede neural transformer é essencialmente uma aproximação de como o cérebro funciona, pois ela recebe informações e as transforma em outra forma para análise.
Backpropagation
Depois que você escolhe uma arquitetura de rede neural, é preciso treiná-la. Backpropagation é um algoritmo simples e eficaz que pode ser usado para treinar redes neurais. Backpropagation é um algoritmo que funciona com um método de descida de gradiente que nos permite convergir rapidamente em direção aos pesos ótimos da rede neural, em vez de simplesmente se mover em uma direção aleatória.
A razão pela qual é tão eficaz é que o termo de erro de cada camada se propaga para trás através da rede, o que permite calcular gradientes. Esse termo de erro em um dado nó então ajustará os pesos das conexões com os nós em ambos os lados dele, a fim de reduzir erros futuros provenientes desses nós.
Back-props são uma ferramenta poderosa frequentemente empregada em redes neurais de deep learning, que exigem grandes bases de dados para treinamento. A backpropagation pode ser aplicada a muitos tipos diferentes de modelos de rede neural; na verdade, todas as arquiteturas de rede neural que discutimos anteriormente podem, e de fato, se beneficiam da backpropagation. A backpropagation tem sido aplicada com sucesso em muitos campos, como otimização, reconhecimento de padrões e aproximação de funções.
Algoritmos de backpropagation também são conhecidos como back-prop ou back-props.
A razão pela qual é tão eficaz é que o termo de erro de cada camada se propaga para trás através da rede, o que permite calcular gradientes. Esse termo de erro em um dado nó então ajustará os pesos das conexões com os nós em ambos os lados dele, a fim de reduzir erros futuros provenientes desses nós. Algoritmos de backpropagation também são conhecidos como back-prop ou back-props.
A backpropagation funciona com um método de descida de gradiente que permite à backpropagation convergir rapidamente em direção aos pesos ótimos, em vez de simplesmente se mover em uma direção aleatória. A backpropagation pode ser composta de muitos tipos diferentes de modelos de rede neural. Backprop é uma ótima ferramenta para reduzir ou quebrar dependência entre classificadores. Back-props são uma ferramenta poderosa frequentemente empregada em redes neurais de deep learning, que exigem grandes bases de dados para treinamento.
Convergência
Convergência significa quão rápido o modelo “aprende as coisas” quando é treinado com mais dados. Por exemplo, se você estiver usando um modelo de machine learning para fazer previsões sobre o futuro, você vai querer garantir que o modelo tenha boa convergência para que suas previsões sejam precisas. Outro exemplo é se você estiver usando um modelo de machine learning para melhorar algo, como um produto, você vai querer usar um modelo com boa convergência para que as mudanças que você fizer sejam de fato melhores do que aquilo com que você começou.
Convergência lenta em machine learning pode ser ruim porque significa que o modelo não está aprendendo tão rapidamente quanto poderia. Isso pode levar a previsões imprecisas e soluções subótimas. Além disso, convergência lenta pode ser cara em termos de tempo e recursos.
Existem benefícios para uma convergência lenta?
O principal ponto positivo de selecionar um modelo com convergência lenta é que ele será mais preciso. Uma taxa mais lenta de convergência pode levar a previsões ou soluções mais precisas. Além disso, esse tipo de modelo pode ser adequado para casos em que a precisão é o fator mais importante.
Mas, ao selecionar um modelo com convergência lenta, é importante considerar o contexto em que ele será usado. A precisão é o fator mais importante em alguns casos, enquanto a velocidade pode ser mais importante em outros. Além disso, você precisa garantir que tenha dados suficientes para treinar o modelo usando esse método. Se você não tiver dados suficientes, o modelo pode não conseguir aprender adequadamente e não produzirá resultados precisos.
Em suma, ao selecionar um modelo de machine learning, é importante considerar a taxa de convergência. Um modelo com boa convergência será mais preciso e eficiente do que um com convergência lenta. Também é importante ter em mente o contexto em que o modelo será usado para que você possa selecionar um com boa convergência para esse caso de uso.
Overfitting e Underfitting
Um problema com machine learning é o overfitting e o underfitting. Overfitting significa que o algoritmo aprende a fazer certas coisas muito bem, mas não consegue fazer mais nada, porque aprendeu demais sobre o que queríamos que ele fizesse. Underfitting significa que o algoritmo não foi treinado o suficiente, então não sabe o que queremos que ele aprenda sobre como o mundo funciona. Quando há muitos erros nos dados de treinamento, isso pode ser devido a overfitting ou underfitting.
Por exemplo, um algoritmo de machine learning pode ser capaz de aprender a identificar objetos em imagens muito bem. Mas, porque ele aprendeu demais sobre o que queríamos que fizesse, não será bom em fazer qualquer outra coisa, como identificar outros objetos em imagens diferentes ou reconhecer objetos em contextos diferentes.
Outro exemplo é quando um algoritmo de machine learning só consegue aprender coisas muito básicas a partir dos dados. Isso acontece quando o algoritmo não é treinado o suficiente e não aprende o que queremos que ele aprenda sobre como o mundo funciona. Quando há muitos erros nos dados de treinamento, isso pode ser devido a overfitting ou underfitting.
Uma maneira de evitar o overfitting é usar um algoritmo mais complexo. Isso ajudará o algoritmo a aprender mais sobre os dados sem aprender demais sobre o que queremos que ele faça. Outra maneira de evitar o overfitting é usar uma quantidade menor de dados de treinamento. Isso ajudará o algoritmo a aprender menos sobre o que queremos que ele faça. Uma maneira de evitar o underfitting é usar um algoritmo menos complexo, o que ajudará o algoritmo a aprender mais a partir dos dados sem ser treinado muitas vezes. Outra maneira de evitar o underfitting é usar uma quantidade maior de dados de treinamento, para que mais partes de como o mundo funciona sejam incluídas nos dados.
Overfitting e underfitting são dois problemas que podem ocorrer em machine learning. Overfitting acontece quando o algoritmo aprende demais sobre o que queremos que ele faça. Underfitting acontece quando o algoritmo não foi treinado o suficiente, então não sabe o que queremos que ele aprenda sobre como o mundo funciona. Usando um algoritmo mais complexo ou uma quantidade maior de dados de treinamento, podemos ajudar a evitar esses problemas.
Hiperparâmetros
Para ajustar e lidar com essas questões, você pode calibrar uma série de parâmetros diferentes. Aqui abordamos os mais comumente usados.
Épocas
Ao treinar uma rede neural usando backpropagation, geralmente há milhares ou até milhões de conexões para ajustar. Realizar todas essas atualizações simultaneamente exigiria exponencialmente mais tempo de computação, o que é inviável para a maioria das aplicações. É por isso que a backpropagation atualiza os pesos um de cada vez, em iterações. Dessa forma, a backpropagation não precisa recalcular os pesos de todas as conexões de entrada para cada instância de treinamento, o que levaria muito tempo. Em vez disso, a backpropagation atualiza os pesos um de cada vez e mantém o controle de todas as mudanças para que possa atualizar os outros pesos assim que concluir sua iteração atual.
Épocas são uma unidade de medida em machine learning que indica o número de vezes que todos os dados de treinamento foram processados. Elas geralmente são usadas quando o número de itens de dados é muito grande. As épocas também são úteis quando há necessidade de redefinir os pesos da rede neural de volta aos seus valores iniciais.
Quando as épocas são inicializadas pela primeira vez, o algoritmo de retropropagação começará no início do conjunto de dados e avançará até chegar ao fim. Em seguida, ele voltará ao início e começará a processar a partir daí novamente. Esse processo continuará até que ele tenha passado por todos os itens de dados no conjunto.
O número de épocas que deve ser executado dependerá de quão bem a rede neural está se comportando nos dados de treinamento. Se a rede não estiver aprendendo a partir dos dados, então mais épocas devem ser executadas. Por outro lado, se a rede estiver sofrendo overfitting ou aprendendo demais com o ruído nos dados, então menos épocas devem ser executadas.
Épocas também podem ser usadas para economizar tempo durante o processo de treinamento. Quando a retropropagação percorre os dados de treinamento, ela precisa voltar e então retornar ao início quando chega ao fim do conjunto. Se épocas não fossem usadas nessa situação, a retropropagação teria que processar o conjunto de dados inteiro toda vez. Isso poderia consumir muito tempo. No entanto, como a retropropagação volta ao início do conjunto de dados, ela só precisa recuar um certo número de itens. Isso reduz significativamente a quantidade de tempo necessária para cada época.
Taxa de aprendizado
Uma taxa de aprendizado determina quão rápido seu modelo treina (ou captura dados) – isso significa que, se você definir sua taxa de aprendizado muito baixa, seu modelo pode não treinar nada; mas, se você defini-la muito alta, então o treinamento pode ser ineficiente porque não há tempo para correção de erros. Seu objetivo ao definir o valor correto para o seu caso depende de duas coisas: 1) quanto dado você tem disponível para treinar seu modelo e 2) quanto tempo você tem para treiná‑lo.
Como a taxa de aprendizado afeta seu modelo? Se você estiver treinando uma rede neural, então quanto maior for a taxa de aprendizado, mais próximo cada valor se move em direção a 0 ou 1 (0 significando nenhum efeito; 1 significando que ele tem 100% do seu efeito original). Com uma taxa de aprendizado mais baixa, a rede convergirá mais lentamente, mas será mais precisa. Isso faz sentido porque, com uma taxa de aprendizado baixa, há mais oportunidades para a rede ajustar seus pesos para corresponder melhor aos dados.
Como posso descobrir qual deve ser minha taxa de aprendizado? Há algumas maneiras de fazer isso: 1) tentativa e erro – todos os modelos exigem quantidades diferentes de tempo de treinamento para atingir o mesmo nível de precisão, então é difícil saber qual taxa de aprendizado você deve usar; 2) ler um artigo como este! Isso fornecerá diretrizes gerais. No entanto, há maneiras ainda mais específicas de definir seu valor de aprendizado: 1) executar uma busca em grade – isso é quando você testa muitas combinações diferentes de taxas de aprendizado para encontrar aquela que funciona melhor para o seu caso; 2) usar uma curva de validação – isso é quando você plota a precisão do seu modelo em relação ao seu tempo de treinamento, o que mostrará quão rápido ou devagar ele está aprendendo. Esta é a melhor opção se você quiser obter o resultado mais preciso possível dentro de um determinado prazo.
Quais são os fatores que determinam a taxa de aprendizado correta para o meu caso? O primeiro fator é quanto dado você tem disponível para treinar seu modelo. Se você estiver trabalhando com muitos dados, então faz sentido usar um valor mais alto (porque isso significa que há mais exemplos dos quais seu modelo pode aprender – permitindo assim que ele aprenda mais rápido). Por outro lado, se você tiver uma pequena quantidade de dados disponível para treinar seu modelo, então defina um valor mais baixo.
O segundo fator é quanto tempo você tem disponível para treinar seu modelo. Como mencionado anteriormente, é impossível que tentativa e erro ou a leitura de um artigo revelem qual taxa de aprendizado funcionará melhor para um caso específico. Isso porque a melhor opção para uma pessoa pode não ser a melhor opção para outra. No entanto, se você quiser treinar seu modelo o mais rápido possível, então não use um valor muito alto; enquanto, se você tiver mais tempo disponível, então pode se dar ao luxo de usar uma taxa de aprendizado mais alta (e descobrir o que funciona melhor).
Como você pode ver, há vários fatores que determinam o valor correto para sua taxa de aprendizado. Felizmente, também há muitas maneiras de descobrir o que funciona melhor!
A taxa de aprendizado está muito baixa ou muito alta?
Se o seu modelo não estiver treinando nada, então isso indica que sua taxa de aprendizado está muito baixa e você deve aumentá‑la (mas certifique‑se de que ela também não fique muito alta). Outra maneira de verificar se seu modelo está configurado corretamente é usar uma curva de validação no seu conjunto de dados. Se você definir corretamente sua taxa de aprendizado, então a curva será semelhante a um gráfico que parece uma linha reta passando pelos pontos próximos de 1. Se não for, então você deve considerar alterar sua taxa de aprendizado e executar outra curva de validação.
Como posso acelerar meu modelo?
Se você definir uma taxa de aprendizado mais alta, seu modelo aprenderá mais rapidamente, mas também poderá ser menos preciso. Por outro lado, se você definir uma taxa de aprendizado mais baixa, seu modelo aprenderá mais lentamente, mas será mais preciso. Isso faz sentido porque, com uma taxa de aprendizado baixa, há mais oportunidades para a rede adaptar seus pesos para corresponder melhor aos dados. Por outro lado, se você estiver usando uma taxa de aprendizado muito alta, então seu modelo pode aprender rapidamente a fazer previsões com base no ruído do conjunto de dados em vez dos dados reais. Isso não será muito útil porque ele não estará analisando criticamente suas previsões nem entendendo por que elas estão erradas (ele apenas continuará cometendo erros semelhantes).
Se você diminuir demais a taxa de aprendizado, então seu modelo também pode levar muito tempo para treinar. Isso acontece porque os pesos estão sendo atualizados tão lentamente que talvez ele não consiga se adaptar rápido o suficiente quando novos dados chegarem.
Escolhendo uma taxa de aprendizado ideal
Como você pode ver, há vários fatores que determinam a taxa de aprendizado do seu modelo e a melhor opção é diferente para cada pessoa. Se você tiver bastante tempo disponível, mas quiser treinar rapidamente, então use um valor mais baixo para sua taxa de aprendizado. No entanto, se você quiser treinar modelos precisos rapidamente, então use uma taxa de aprendizado mais alta.
Transfer Learning
O que é Transfer Learning?
Transfer learning é um processo em que o conhecimento é aprendido em um modelo e pode ser transferido para outro modelo. Isso é feito para preencher as lacunas na base de conhecimento do outro modelo. O uso de transfer learning tem se mostrado muito bem‑sucedido, especialmente no campo de machine learning. Um ótimo exemplo disso é a aplicação de redes neurais profundas para melhorar o reconhecimento de fala em telefones celulares.
Por que o Transfer Learning é importante?
A principal razão pela qual o transfer learning é importante é porque ele ajuda a preencher as lacunas que existem entre diferentes modelos. Como isso preenche essas lacunas, o transfer learning pode nos ajudar a usar informações que, de outra forma, não poderíamos usar se dois modelos não fossem combinados. Outro ótimo motivo pelo qual o transfer learning é importante é porque ele pode acelerar o processo de aprendizado. Isso acontece porque o transfer learning pode reutilizar conhecimento que já foi aprendido em um modelo diferente. Por fim, o transfer learning é importante porque pode melhorar a precisão de nossos modelos. Ao preencher as lacunas entre diferentes modelos, o transfer learning pode ajudar a melhorar a precisão de nossos modelos, permitindo que usemos mais informações.
Transfer learning se tornou uma ferramenta poderosa para sistemas de machine learning (ML) nos últimos anos. Sua popularidade se deve ao fato de que o transfer learning pode ajudar a reduzir a quantidade de dados de treinamento necessários e também melhorar o desempenho. Além disso, o transfer learning é mais fácil de implementar e depurar do que algoritmos tradicionais de machine learning.
Quais são algumas aplicações de Transfer Learning?
Transfer learning encontrou várias aplicações importantes em campos como visão computacional, processamento de linguagem natural e machine learning. Algumas das aplicações mais notáveis incluem:
- Usar transfer learning para melhorar o reconhecimento de fala em telefones celulares
- Usar transfer learning para melhorar o reconhecimento de objetos
- Usar transfer learning para melhorar o reconhecimento facial
- Usar transfer learning para melhorar machine learning
- Usar transfer learning para melhorar a classificação de texto
Em resumo, o transfer learning está se tornando uma ferramenta popular para sistemas de machine learning, devido à sua capacidade de minimizar a quantidade de dados de treinamento necessários e melhorar o desempenho. O transfer learning é amplamente usado em aplicações de reconhecimento de fala, tradução automática e visão computacional e se tornou uma ferramenta valiosa para pesquisadores e desenvolvedores que compartilham código‑fonte entre diferentes tarefas em diferentes domínios.
Otimizadores
Resumo
Redes neurais convolucionais, células de Long Short Term Memory, redes neurais recorrentes e Convolutional Restricted Boltzmann Machine (CBRMs) são alguns dos diferentes tipos de redes neurais que estão sendo usados atualmente no campo de deep learning. Esses diferentes tipos de redes neurais são responsáveis por impulsionar muitas das aplicações de maior sucesso de hoje. Embora as Redes Neurais Convolucionais tenham sido originalmente projetadas para a tarefa de visão computacional, elas foram adaptadas para outras tarefas, como reconhecimento de fala e processamento de linguagem natural, com muito sucesso. Redes Neurais Recorrentes e células de Long Short Term Memory são amplamente responsáveis por tornar as redes neurais recorrentes mais poderosas do que nunca. Com os contínuos avanços nas Redes Neurais Convolucionais e nas Redes Neurais Recorrentes, só podemos esperar que esses tipos de redes neurais se tornem cada vez mais poderosos.
Otimizações de Modelo
Em machine learning, o tamanho de um modelo de machine learning é uma medida do seu grau de complexidade. Quanto maior um modelo de machine learning, maior o risco de que ele não converja durante os algoritmos de otimização e de que apresente um grau mais alto de overfitting.
Para combater essas desvantagens, técnicas de otimização de machine learning podem ser empregadas para reduzir o tamanho dos modelos de machine learning, mantendo seu poder preditivo. Essas técnicas, como quantização, poda, destilação de conhecimento e mais, que discutiremos nesta seção, são projetadas para melhorar o desempenho dos algoritmos de machine learning, tornando‑os mais computacionalmente eficientes para uma variedade de tarefas.
De modo geral, as técnicas de otimização de aprendizado de máquina abordam dois aspectos:
- redução do tamanho do modelo;
- aumento da eficiência computacional.
Isso pode ser alcançado realizando otimizações de software ou contando com suporte de hardware.
Otimizações de Software
Compactação
A compactação de modelo é uma técnica de otimização de aprendizado de máquina que usa conjuntos (ensembles) de modelos de aprendizado de máquina para reduzir o tamanho dos modelos. A compactação de modelo funciona treinando vários modelos de aprendizado de máquina com base em diferentes subconjuntos de exemplos de aprendizado de máquina e, em seguida, usando votação ou média para produzir um único modelo. Como cada modelo de aprendizado de máquina é menor do que o modelo original, há menos parâmetros de modelo de aprendizado de máquina para computar e armazenar.
Os próprios dados de aprendizado de máquina também podem ser compactados para torná‑los mais gerenciáveis. Isso pode ser feito de várias maneiras, como usando um algoritmo de compressão com perda ou por subamostragem dos dados. Algoritmos de compressão com perda descartam parte dos dados de aprendizado de máquina para reduzir seu tamanho, enquanto a subamostragem dos dados reduz o número de exemplos de aprendizado de máquina usados para o treinamento.
Quantização
Quantização é uma técnica de otimização de aprendizado de máquina que reduz o tamanho dos parâmetros do modelo de aprendizado de máquina ao substituí‑los por valores inteiros. Isso é feito arredondando os parâmetros do modelo de aprendizado de máquina para o valor inteiro mais próximo. A vantagem da quantização é que ela frequentemente leva a modelos de aprendizado de máquina que são mais computacionalmente eficientes do que suas contrapartes não quantizadas.
Poda de Pesos
Poda de pesos é uma técnica de otimização de aprendizado de máquina que reduz o tamanho dos parâmetros do modelo de aprendizado de máquina removendo alguns de seus pesos. Isso é feito definindo pesos ou ativações do modelo de aprendizado de máquina para zero se for determinado que eles não têm efeito nas previsões do modelo. Ao remover pesos do modelo de aprendizado de máquina, os modelos podem ser menores, o que reduz o tempo necessário para treiná‑los e o espaço de memória necessário para armazená‑los.
Destilação de Conhecimento
Destilação de conhecimento é uma técnica de otimização de aprendizado de máquina que pode ser usada para melhorar o desempenho de modelos de aprendizado de máquina. É um processo em duas etapas: primeiro, um modelo de aprendizado de máquina mais complexo é treinado em um grande conjunto de dados; segundo, o modelo de aprendizado de máquina é destilado em um modelo mais simples que pode ser usado para fazer previsões em conjuntos de dados menores. A vantagem da destilação de conhecimento é que modelos de aprendizado de máquina que foram destilados em grandes conjuntos de dados podem ser aplicados a conjuntos de dados menores sem necessidade de novo treinamento. Em particular, a destilação de conhecimento frequentemente dá origem a modelos de aprendizado de máquina com previsões mais precisas do que suas contrapartes complexas antes de serem destiladas.
Aceleração por Hardware
Aprendizado de máquina é um campo da inteligência artificial que se concentra em ensinar máquinas a se comportarem de maneiras mais parecidas com as humanas. Aceleração por hardware é um termo usado para descrever o uso de dispositivos de hardware específicos para melhorar o desempenho de um sistema computacional. Quando se trata de aprendizado de máquina, a aceleração por hardware pode desempenhar um papel muito importante na melhoria do desempenho e da eficiência do sistema.
O conteúdo a seguir se concentrará na aceleração por hardware para aprendizado de máquina e em como ela pode ser aproveitada por engenheiros que trabalham com essa tecnologia. A primeira seção fornecerá uma visão geral da aceleração por hardware, detalhando sua história e definindo o que realmente são aceleradores de hardware antes de avançar para como eles podem ajudar especificamente com aprendizado de máquina. Este artigo deve servir como um guia introdutório para um aspecto particular do aprendizado de máquina que tem a aceleração por hardware em seu núcleo.
Um acelerador de hardware, neste sentido da palavra, é um circuito integrado projetado para executar uma tarefa específica de maneira mais eficiente do que seria possível em uma CPU de uso geral. Isso ocorre porque aceleradores de hardware são projetados sob medida para realizar os cálculos necessários de forma rápida e eficiente. O que isso significa para a aceleração por hardware em aprendizado de máquina especificamente é que esses dispositivos de hardware podem melhorar tanto o desempenho quanto a eficiência do sistema.
Unidades de Processamento Gráfico
GPUs (graphical processing units) são aceleradores de hardware projetados especificamente para realizar cálculos relacionados a gráficos de computador. Esses dispositivos de hardware oferecem melhorias significativas em relação às CPUs tradicionais quando se trata de aprendizado de máquina porque são otimizados para operações de aritmética de ponto flutuante relacionadas a manipulações de matrizes, que são comuns em algoritmos de aprendizado de máquina. Por esse motivo, GPUs são frequentemente usadas em aprendizado de máquina para tarefas como treinamento e inferência.
Unidades de Processamento de Tensores
Mais recentemente, aceleradores de hardware conhecidos como TPUs (tensor processing units) foram produzidos pelo Google especificamente para acelerar computações de aprendizado de máquina. Esses dispositivos de hardware foram projetados com base em uma compreensão dos requisitos exclusivos do aprendizado de máquina e oferecem uma vantagem significativa de desempenho em relação a CPUs e GPUs.
Unidades de Processamento Neural
De modo geral, a aceleração por hardware é uma ferramenta importante que pode ser usada para melhorar o desempenho e a eficiência de sistemas de aprendizado de máquina. Quando se trata especificamente de GPUs, demonstrou‑se que elas são um acelerador de hardware particularmente eficaz para esses tipos de sistemas. No entanto, à medida que o campo de aprendizado de máquina evolui, é provável que outros dispositivos de hardware sejam produzidos especificamente para atender às necessidades dessa tecnologia. Nesse sentido, estamos vendo uma grande variedade de dispositivos diferentes especializados como Unidades de Processamento Neural que atendem ao treinamento e à inferência de aprendizado de máquina. Em qualquer caso, a aceleração por hardware deve ser considerada uma ferramenta importante para qualquer pessoa que trabalhe com algoritmos de aprendizado de máquina.
Implantação de Modelos de ML
Há muitos fatores que afetam a precisão e a latência de modelos de aprendizado de máquina. Alguns desses fatores são intrínsecos ao algoritmo de aprendizado de máquina, enquanto outros dependem da implementação ou do ambiente específicos. Em geral, porém, há três fatores principais que influenciam o desempenho de algoritmos de aprendizado de máquina:
O tamanho e a complexidade do conjunto de dados A complexidade do algoritmo Hiperparâmetros como número de camadas, tipo de camadas, função de ativação etc.
Conclusão
Aprendizado de Máquina é parte integrante do futuro da Inteligência Artificial (IA) e desempenhará um papel em muitas tecnologias emergentes, incluindo carros autônomos, assistentes virtuais e eletrodomésticos inteligentes. Engenheiros de Aprendizado de Máquina são necessários para ajudar a desenvolver algoritmos de aprendizado de máquina que permitirão que essas tecnologias alcancem todo o seu potencial. Com isso em mente, esperamos que o conteúdo que você aprendeu neste curso tenha despertado em você um profundo interesse em aprender mais sobre aprendizado de máquina.
Apêndice
Sistemas Embarcados
Em sistemas embarcados, um microcontrolador é um pequeno computador em um único circuito integrado que contém toda a circuitaria necessária para controlar dispositivos embarcados. Esses dispositivos embarcados geralmente estão incorporados em outros produtos, como eletrodomésticos ou veículos, e podem assumir várias formas, desde portas lógicas simples até microcomputadores com portas de entrada/saída. O PICmicro, por exemplo, é um de muitos exemplos de sistema de controlador embarcado que faz a interface entre o seu computador e hardware periférico como impressoras, scanners, teclados, mouses, câmeras digitais etc. Esse tipo de dispositivo pode ser usado para monitorar condições ambientais ou controlar processos industriais. Os primeiros controladores programáveis eram sistemas embarcados projetados na década de 1960 pela General Electric para uso em suas máquinas de lavar e secadoras, que detectavam quando as roupas estavam suficientemente lavadas e então desligavam a máquina.
Hoje, sistemas embarcados podem ser encontrados em uma vasta gama de produtos e eletrodomésticos, e computadores embarcados são usados como a unidade principal de computação para a maioria dos dispositivos domésticos modernos, como micro‑ondas, máquinas de lavar, lava‑louças e até cafeteiras. Esses computadores embarcados transmitem informações ao usuário por meio de várias formas de saída, como displays digitais e LEDs. Computadores embarcados também podem receber entrada de seu entorno, como botões ou interruptores na parte externa do dispositivo, o que permite aos usuários controlar funções como ajustes de tempo ou temperatura. Há um computador embarcado dentro do seu carro para executar todos os controles do veículo, como setas, buzina, velocímetro etc.; essencialmente dando a você controle total sobre o carro sem ter que interagir diretamente com os componentes do motor.
Sistemas embarcados também podem realizar cálculos complexos ou manipulação de dados para monitorar e controlar com base em condições ambientais. Um sistema embarcado baseado em um processador de sinal digital (DSP) pode ser usado para coletar dados climáticos para pesquisa, detectar mudanças em fatores como velocidade do vento, umidade etc., que então podem ser usados para fazer previsões sobre o ambiente. Os computadores embarcados dentro de veículos estão usando esse tipo de tecnologia, por exemplo, para detectar quando peças estão próximas de quebrar ou superaquecer. Esses sistemas embarcados são cruciais para o funcionamento eficiente do nosso mundo hoje; no entanto, o desenvolvimento de sistemas embarcados tem sido historicamente limitado devido ao seu tamanho e ao nível de funcionalidade exigido.
Mas a computação embarcada está avançando rapidamente! Graças aos desenvolvimentos recentes em microeletrônica, sistemas embarcados podem fazer mais sendo menores do que nunca. A tecnologia de sistemas em um chip (SoC) permitiu que sistemas embarcados fossem combinados com circuitaria RF, analógica e digital em um único chip que pode então ser incorporado a outros produtos. Isso tornou o desenvolvimento de produtos mais fácil e rápido, além de reduzir os custos de produção. Com a demanda cada vez maior por sistemas embarcados em todos os aspectos de nossas vidas, é seguro dizer que sistemas embarcados são críticos para o funcionamento do mundo ao nosso redor!
A História dos Sistemas Embarcados
Sistemas embarcados vêm sendo usados há quase tanto tempo quanto existem dispositivos eletrônicos. Um dos primeiros exemplos é o controlador de válvulas eletrônicas que foi usado em bombardeiros da Segunda Guerra Mundial como o B-17 Flying Fortress para ajudar na navegação e na mira das bombas. Esses sistemas embarcados eram essencialmente pequenos computadores que eram incorporados em um sistema maior para fornecer funcionalidade adicional.
No início da década de 1960, a General Electric desenvolveu os primeiros controladores embarcados para uso em suas máquinas de lavar e secadoras. Esses controladores detectavam quando as roupas já tinham sido lavadas suficientemente e então desligavam a máquina. Isso foi um desenvolvimento inovador na época, pois mostrou o potencial dos sistemas embarcados para controlar e interagir com hardware periférico.
O final da década de 1960 testemunhou uma proliferação de sistemas embarcados sendo usados em todos os tipos de produtos. A missão Apollo 11, que colocou o primeiro homem na lua, empregou extensivamente sistemas embarcados em seus sistemas de guiagem e controle. De fato, os sistemas embarcados eram tão críticos para o sucesso da missão que, se um tivesse falhado, é provável que a missão tivesse sido abortada.
À medida que os sistemas embarcados continuaram a se proliferar, também cresceu a necessidade de padronizar como esses sistemas interagem com o ambiente. Em 1981, um grupo de engenheiros se reuniu para formar o Embedded Systems Conventional (ESC). Essa organização tinha como objetivo desenvolver e promover padrões para o desenvolvimento de sistemas embarcados. Uma de suas conquistas mais notáveis foi o desenvolvimento do barramento embarcado comum, que permite que sistemas embarcados se comuniquem facilmente entre si.
Os sistemas embarcados percorreram um longo caminho desde seus primeiros dias e continuam a desempenhar um papel fundamental em nosso mundo hoje. Com os avanços da tecnologia, os sistemas embarcados estão se tornando menores e mais potentes do que nunca, tornando-se uma parte essencial do desenvolvimento de produtos. À medida que os sistemas embarcados se tornam ainda mais integrados em nossas vidas diárias, espera-se que o desenvolvimento de sistemas embarcados continue avançando rapidamente!
Alguns exemplos tradicionais específicos de sistemas embarcados incluem:
- relógios digitais
- fornos de micro-ondas
- carros
- roteadores
- sistemas embarcados de controle de iluminação, como aqueles encontrados em painéis de LED ou aeroportos
- eletrodomésticos inteligentes embarcados, como assistentes de voz e fechaduras de portas em rede
- controladores embarcados de automação industrial, como aqueles encontrados em linhas de montagem de carros
A lista continua! Contanto que use tecnologia embarcada, conta como um sistema embarcado. Veja a seção “Leituras adicionais” para alguns bons artigos sobre tecnologia embarcada que você pode usar como fontes, se necessário. Porém, você não precisa se limitar a esses exemplos! Se você conhece outros sistemas embarcados que fazem coisas interessantes, inclua-os também :)
Uma coisa que você pode mencionar é como novas tecnologias estão levando os sistemas embarcados para novas áreas. Por exemplo, sistemas embarcados agora estão sendo usados no desenvolvimento de veículos autônomos. À medida que os sistemas embarcados se tornam cada vez mais onipresentes, sua importância só continuará a crescer!
Leituras adicionais
Continuaremos atualizando / modificando esta série de cursos. Todos os direitos reservados à Seeed Studio e ao Prof. Vijay Janapa Reddi.