{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Capítulo 1: Introdução à IA" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Cover\"\n", "\n", "## Conceitos Básicos de IA\n", "\n", "A **Inteligência Artificial (IA)** é uma área da ciência da computação voltada para o desenvolvimento de sistemas capazes de realizar tarefas que, tradicionalmente, requerem a inteligência humana. Essas tarefas incluem reconhecimento de padrões, tomada de decisões, tradução de idiomas, processamento de linguagem natural, visão computacional e aprendizado a partir de dados. A IA busca simular aspectos da cognição humana, como o raciocínio lógico, a resolução de problemas e a capacidade de adaptação, utilizando algoritmos e modelos matemáticos implementados em sistemas computacionais {cite}`russell2016artificial`.\n", "\n", "Dentro da IA, existem diferentes áreas de aplicação que já estão amplamente integradas ao nosso cotidiano, como assistentes virtuais, algoritmos de recomendação e diagnósticos médicos auxiliados por computador {cite}`sutton2018reinforcement`. Essas soluções, no entanto, são projetadas para tarefas específicas e não possuem a capacidade de agir além dos domínios para os quais foram programadas. Esse tipo de IA é conhecido como **IA estreita** ou **IA fraca** (Weak AI), e é a forma de IA que predomina atualmente.\n", "\n", "Outro conceito amplamente discutido é o da **Inteligência Artificial Geral (AGI - Artificial General Intelligence)**, que se refere a um tipo de IA hipotética capaz de realizar qualquer tarefa cognitiva que um ser humano pode executar, com a mesma flexibilidade e adaptabilidade {cite}`goertzel2014artificial`. Embora essa forma de IA ainda seja teórica, muitos especialistas acreditam que estamos progredindo nessa direção. O desenvolvimento de uma AGI poderia revolucionar diversos campos, desde a ciência até a medicina, com impactos profundos sobre a sociedade {cite}`bostrom2014superintelligence`.\n", "\n", "## História e Evolução da Inteligência Artificial\n", "\n", "A IA tem uma rica história, que pode ser traçada em três grandes fases:\n", "\n", "### Primeiros Conceitos e Antecedentes (1940-1950)\n", "\n", "A ideia de criar máquinas inteligentes remonta aos tempos antigos, mas foi no século XX que os primeiros passos reais foram dados:\n", "- **1943**: {cite}`mcculloch1943` criam um modelo de neurônios artificiais, estabelecendo as bases para redes neurais.\n", "- **1950**: O matemático **Alan Turing** publica o famoso artigo {cite}`turing1950`, no qual propõe o **Teste de Turing** para determinar se uma máquina pode exibir comportamento inteligente indistinguível de um ser humano.\n", "\n", "### O Nascimento da IA (1956-1970)\n", "\n", "A IA como disciplina nasceu oficialmente na **Conferência de Dartmouth** em 1956, onde cientistas como **John McCarthy**, **Marvin Minsky**, **Claude Shannon** e **Herbert Simon** reuniram-se para discutir o desenvolvimento de máquinas inteligentes. Durante esse período, os primeiros programas de IA foram criados:\n", "- **1956**: John McCarthy cunhou o termo \"inteligência artificial\" {cite}`mcCarthy1956`.\n", "- **1957**: Herbert Simon e Allen Newell desenvolveram o **Logic Theorist**, considerado o primeiro programa de IA {cite}`newell1957`.\n", "\n", "### Períodos de Otimismo e Inverno da IA (1970-1990)\n", "\n", "Nos anos 70 e 80, houve um grande otimismo em relação ao futuro da IA. No entanto, devido às limitações tecnológicas da época, como poder de processamento e dados insuficientes, a IA passou por períodos de estagnação, conhecidos como \"invernos da IA\", onde o interesse e o financiamento diminuíram.\n", "\n", "### Renascimento e IA Moderna (1990-presente)\n", "\n", "Com o avanço no poder de computação, a explosão de dados e o desenvolvimento de algoritmos mais eficientes, a IA voltou a ganhar destaque nos anos 90. As áreas de aprendizado de máquina (machine learning) e redes neurais profundas (deep learning) revolucionaram o campo. Exemplos notáveis incluem:\n", "- **1997**: O supercomputador **Deep Blue**, da IBM, derrotou o campeão mundial de xadrez **Garry Kasparov** {cite}`campbell2002`.\n", "- **2012**: A rede neural **AlexNet** vence a competição ImageNet, marcando o início da era moderna da visão computacional {cite}`krizhevsky2012imagenet`.\n", "- **2016**: O programa [**AlphaGo**](https://deepmind.com/research/case-studies/alphago-the-story-so-far), desenvolvido pela DeepMind, derrotou o campeão mundial de Go{cite}`silver2016mastering`.\n", "\n", "## *Timeline* da IA\n", "\n", "| Ano | Evento Importante |\n", "|------|--------------------------------------------|\n", "| 1943 | McCulloch e Pitts criam o primeiro modelo de neurônio artificial. |\n", "| 1950 | Alan Turing publica o artigo sobre o Teste de Turing. |\n", "| 1956 | Conferência de Dartmouth marca o nascimento oficial da IA. |\n", "| 1957 | Criação do Logic Theorist, primeiro programa de IA. |\n", "| 1997 | Deep Blue derrota o campeão de xadrez Garry Kasparov. |\n", "| 2012 | AlexNet impulsiona o uso de redes neurais profundas. |\n", "| 2016 | AlphaGo vence o campeão mundial de Go. |\n", "\n", "## Principais Aplicações\n", "\n", "A Inteligência Artificial (IA) tem revolucionado diversos setores e indústrias nos últimos anos, conforme destacado por {cite}`russell2021`. Suas aplicações são vastas e continuam se expandindo rapidamente. Algumas das principais áreas onde a IA tem sido amplamente utilizada incluem:\n", "\n", "- **Assistentes Virtuais:** Siri, Alexa e Google Assistant são exemplos populares de IA aplicada para criar assistentes pessoais inteligentes.\n", "\n", "- **Saúde:** A IA auxilia no diagnóstico de doenças, análise de imagens médicas, desenvolvimento de medicamentos e personalização de tratamentos.\n", "\n", "- **Finanças:** Algoritmos de IA são usados para detecção de fraudes, análise de risco de crédito, trading automatizado e atendimento ao cliente.\n", "\n", "- **Automação Industrial:** Robôs e sistemas inteligentes otimizam processos de produção, manutenção preditiva e controle de qualidade.\n", "\n", "- **Transporte:** Veículos autônomos, otimização de rotas e sistemas de gerenciamento de tráfego utilizam IA para melhorar a eficiência e segurança.\n", "\n", "- **Marketing e Vendas:** Recomendações personalizadas, segmentação de clientes e chatbots para atendimento são aplicações comuns nessa área.\n", "\n", "- **Educação:** Sistemas de tutoria inteligente, avaliação automatizada e personalização do aprendizado são exemplos de IA na educação.\n", "\n", "- **Segurança:** Reconhecimento facial, detecção de ameaças cibernéticas e análise de padrões para prevenção de crimes.\n", "\n", "- **Agricultura:** Monitoramento de culturas, previsão de colheitas e otimização do uso de recursos através de análise de dados e imagens de satélite.\n", "\n", "- **Entretenimento:** Recomendação de conteúdo em plataformas de streaming, criação de conteúdo gerado por IA e jogos com personagens não-jogáveis (NPCs) mais inteligentes.\n", "\n", "Essas aplicações demonstram o potencial transformador da IA em praticamente todos os aspectos da vida moderna. À medida que a tecnologia continua a evoluir, podemos esperar que surjam ainda mais aplicações inovadoras, impulsionando avanços significativos em eficiência, personalização e tomada de decisões em diversos campos.\n", "\n", "## Futuro da IA\n", "\n", "O futuro da Inteligência Artificial (IA) é repleto de promessas e inovações, mas também apresenta uma série de desafios éticos e sociais que precisam ser cuidadosamente considerados. À medida que a tecnologia avança, as implicações de sua adoção se tornam cada vez mais complexas, exigindo um diálogo contínuo entre desenvolvedores, legisladores e a sociedade em geral.\n", "\n", "### Oportunidades e Benefícios\n", "\n", "A IA tem o potencial de transformar radicalmente diversos setores, desde a saúde até a educação, passando pela indústria e serviços {cite}`vinuesa2020global`. Com a automação de tarefas repetitivas e a capacidade de analisar grandes volumes de dados, a IA pode aumentar a eficiência operacional, reduzir custos e melhorar a qualidade dos serviços. Por exemplo, na área da saúde, algoritmos de IA podem ajudar a diagnosticar doenças com maior precisão e rapidez, permitindo tratamentos mais eficazes e personalizados. Na educação, sistemas de aprendizado adaptativo podem oferecer experiências de aprendizado individualizadas, atendendo às necessidades específicas de cada aluno {cite}`holmes2019`.\n", "\n", "Além disso, a IA pode contribuir significativamente para a resolução de problemas globais, como as mudanças climáticas e a escassez de recursos. Tecnologias baseadas em IA têm o potencial de otimizar o uso de energia, prever desastres naturais e melhorar a gestão de recursos hídricos e agrícolas, promovendo um desenvolvimento mais sustentável {cite}`rolnick2019tackling`. Por exemplo, no setor agrícola, o uso de IA pode permitir um monitoramento mais preciso das colheitas e a identificação de doenças nas plantas, levando a uma produção mais eficiente e sustentável {cite}`kamilaris2018`.\n", "\n", "No campo da energia, a IA pode ajudar a gerenciar redes elétricas inteligentes, permitindo um melhor equilíbrio entre a oferta e a demanda de eletricidade e reduzindo o desperdício {cite}`wang2019artificial`. Em termos de transporte, a IA pode ser crucial para o desenvolvimento de veículos autônomos, que têm o potencial de reduzir acidentes, otimizar o tráfego e diminuir as emissões de gases de efeito estufa {cite}`fagnant2015`.\n", "\n", "Este cenário aponta para um futuro no qual a IA desempenhará um papel central na resolução de desafios complexos, melhorando a qualidade de vida e promovendo o progresso em diversos setores da sociedade. \n", "\n", "### Desafios Éticos e Sociais\n", "\n", "Apesar das oportunidades, o avanço da IA também levanta questões éticas e sociais significativas. Um dos principais desafios é a **perda de empregos** devido à automação. À medida que as máquinas se tornam mais capazes de realizar tarefas que antes eram executadas por humanos, há uma preocupação crescente sobre o futuro do trabalho. De acordo com um relatório do Fórum Econômico Mundial {cite}`wef2020`, até 85 milhões de empregos podem ser deslocados pela automação até 2025, embora se espere que 97 milhões de novos empregos surjam no mesmo período. Setores como manufatura, transporte e até mesmo serviços financeiros podem enfrentar uma reestruturação significativa, levando a um aumento do desemprego e da desigualdade social. Portanto, é crucial que haja um planejamento adequado para a requalificação da força de trabalho, garantindo que os trabalhadores possam se adaptar às novas demandas do mercado {cite}`brynjolfsson_mcafee_2014`.\n", "\n", "Outro ponto crítico é o **uso de IA em armas autônomas**. A possibilidade de desenvolver sistemas de armamento que operam de forma independente levanta questões éticas profundas sobre a responsabilidade e a moralidade de permitir que máquinas tomem decisões de vida ou morte. Segundo a organização Human Rights Watch, armas autônomas podem representar um risco significativo para a humanidade e estão sendo objeto de debates internacionais sobre a necessidade de proibições e regulamentações para evitar o uso indevido dessa tecnologia. A comunidade internacional está cada vez mais consciente da necessidade de regulamentar o uso de IA em contextos militares, buscando evitar uma corrida armamentista tecnológica que poderia ter consequências devastadoras {cite}`russell_dewey_tegmark_2015`.\n", "\n", "A **privacidade dos dados** também é uma preocupação central. Com a coleta massiva de dados pessoais para treinar algoritmos de IA, surge o risco de violação da privacidade e do uso indevido dessas informações. De acordo com o relatório da Comissão Europeia sobre IA {cite}`europeancommission2020`, é fundamental que as empresas e organizações adotem práticas transparentes e responsáveis no tratamento de dados, garantindo que os direitos dos indivíduos sejam respeitados.\n", "\n", "O futuro da IA é promissor, mas não sem desafios. A tecnologia tem o potencial de trazer grandes benefícios para a sociedade, desde melhorias na eficiência e na qualidade dos serviços até a resolução de problemas globais. No entanto, é fundamental que abordemos as questões éticas e sociais que surgem com seu avanço. Com regulamentações adequadas e um uso responsável, podemos garantir que a IA se torne uma força positiva, contribuindo para um futuro mais justo, sustentável e próspero para todos {cite}`floridi_cowls_2019`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ferramentas Essenciais\n", "\n", "### Google Colab\n", "\n", "O Google Colab (Colaboratory) é uma ferramenta poderosa e acessível para tarefas de machine learning. Neste material, exploraremos como o Google Colab pode facilitar o trabalho nessa área, desde a configuração até o uso de recursos avançados. O Colab permite a execução de código Python diretamente no navegador, sendo baseado no Jupyter Notebook. Ele é especialmente útil para tarefas que requerem grande capacidade computacional, como aprendizado de máquina e visão computacional. O Colab oferece um ambiente de desenvolvimento integrado (IDE) sem a necessidade de configuração local, tornando-o acessível para estudantes, pesquisadores e desenvolvedores.\n", "\n", "**Vantagens de usar o Google Colab:**\n", "\n", "- **Gratuito e Acessível:** O Google Colab é gratuito e acessível a todos com uma conta Google, eliminando a necessidade de configurar um ambiente de desenvolvimento local complexo.\n", "- **Recursos de Computação:** O Colab oferece acesso gratuito a GPUs e TPUs, que são essenciais para o treinamento e a inferência de modelos de visão computacional que exigem alto poder de processamento.\n", "- **Integração com o Google Drive:** Facilita a integração com o Google Drive para armazenamento e acesso rápido a grandes conjuntos de dados.\n", "- **Colaboração Facilitada:** Permite que múltiplos usuários trabalhem simultaneamente no mesmo notebook, facilitando a colaboração em projetos de equipe.\n", "- **Ambiente Baseado em Jupyter:** Herda todas as vantagens dos notebooks Jupyter, como células de código e texto, tornando a codificação, documentação e visualização de resultados muito mais eficientes.\n", "\n", "**Como configurar um notebook no Google Colab**\n", "\n", "**Acessando o Colab:**\n", " - Acesse o [Google Colab](https://colab.research.google.com).\n", " - Faça login com sua conta Google.\n", "\n", "**Criando um Novo Notebook:**\n", " - Clique em \"Arquivo\" > \"Novo Notebook\".\n", " - Você pode começar a escrever e executar código Python imediatamente.\n", "\n", "**Configurando o Hardware:**\n", " - Para aproveitar o poder das GPUs, acesse \"Ambiente de execução\" > \"Alterar tipo de ambiente de execução\".\n", " - Em \"Acelerador de hardware\", selecione \"GPU\" ou \"TPU\" conforme necessário.\n", "\n", "**Salvando o Notebook:**\n", " - O arquivo será salvo automaticamente no seu Google Drive. No entanto, existem diversas opções para salvar ou criar uma cópia no menu \"Arquivo\".\n", "\n", "**Instalando bibliotecas necessárias**\n", "\n", "Para instalar bibliotecas no Google Colab, usamos o comando `!pip install`. Aqui estão algumas bibliotecas comuns necessárias para projetos de Visão Computacional:\n", "\n", "```python\n", "# Instalação de bibliotecas essenciais\n", "!pip install numpy\n", "!pip install opencv-python\n", "!pip install matplotlib\n", "!pip install scikit-image\n", "!pip install scikit-learn\n", "```\n", "Esses comandos instalam as seguintes bibliotecas:\n", "\n", "- **[NumPy](https://numpy.org/)**: Para manipulação de arrays e matrizes.\n", "- **[OpenCV](https://opencv.org/)**: Para processamento de imagens e vídeos.\n", "- **[Matplotlib](https://matplotlib.org/)**: Para plotagem de gráficos.\n", "- **[scikit-learn](https://scikit-learn.org/stable/) e [Scikit-image](https://scikit-image.org/)**: Para algoritmos tradicionais de machine learning e processamento de imagens.\n", "\n", "\n", "**Fazendo upload e download de arquivos**\n", "\n", "Para trabalhar com dados locais, você pode fazer upload e download de arquivos diretamente no notebook do Colab:\n", "\n", "- **Upload de Arquivos:**\n", " Use o widget de upload de arquivos fornecido pelo Colab.\n", "\n", " ```python\n", " from google.colab import files\n", " uploaded = files.upload()\n", " ```\n", "\n", " Você também pode arrastar arquivos para a área de trabalho virtual do Google Colab. Após o upload, os arquivos estarão disponíveis no diretório de trabalho atual do Colab.\n", "\n", "- **Download de Arquivos:**\n", " Para baixar arquivos do Colab para o seu computador local.\n", "\n", " ```python\n", " from google.colab import files\n", " files.download('nome_do_arquivo.ext')\n", " ```\n", "\n", "**Conexão com o Google Drive para armazenar e acessar dados**\n", "\n", "O Google Colab permite montar o Google Drive para acessar e salvar arquivos diretamente.\n", "\n", "**Montando o Google Drive:**\n", "Execute o comando abaixo para montar o Google Drive.\n", "\n", "```python\n", "from google.colab import drive\n", "drive.mount('/content/drive')\n", "```\n", "\n", "Siga o link gerado, autorize o acesso e copie o código de autenticação de volta no notebook. Você também pode montar o Google Drive através do botão na barra lateral.\n", "\n", "**Acessando Arquivos no Google Drive:**\n", "Após montar o Google Drive, você pode acessar seus arquivos como se fossem parte do sistema de arquivos local. O módulo `os` fornece funções para interagir com o sistema operacional.\n", "\n", "```python\n", "import os\n", "caminho = '/content/drive/MyDrive'\n", "os.chdir(caminho)\n", "print(\"Diretório atual:\", os.getcwd())\n", "```\n", "\n", "**Salvando Arquivos no Google Drive:**\n", "Para salvar um arquivo no Google Drive diretamente do Google Colab, use o seguinte código.\n", "\n", "```python\n", "import os\n", "\n", "# Definindo os caminhos dos arquivos\n", "arquivo_colab = '/content/meu_arquivo.txt'\n", "destino_drive = '/content/drive/MyDrive/meu_arquivo.txt'\n", "\n", "# Criando diretórios no Google Drive, se necessário\n", "os.makedirs(os.path.dirname(destino_drive), exist_ok=True)\n", "\n", "# Copiando o arquivo para o Google Drive\n", "os.system(f'cp {arquivo_colab} {destino_drive}')\n", "```\n", "\n", "Substitua `'meu_arquivo.txt'` pelo nome do seu arquivo real.\n", "\n", "**Comandos Essenciais do Terminal Linux**\n", "\n", "Esta lista abrange comandos fundamentais para navegação, manipulação de arquivos e monitoramento do sistema em ambientes Linux, incluindo máquinas virtuais e ambientes como o Google Colab.\n", "\n", "| Categoria | Comando | Descrição | Sintaxe | Exemplo |\n", "|-----------|---------|-----------|---------|---------|\n", "| **Navegação e Listagem** |\n", "| | ls | Listar conteúdo do diretório | `ls [opções] [diretório]` | `!ls -la /home` |\n", "| | cd | Mudar diretório | `cd [caminho]` | `!cd /var/log` |\n", "| | pwd | Mostrar diretório atual | `pwd` | `!pwd` |\n", "| **Manipulação de Arquivos e Diretórios** |\n", "| | mkdir | Criar diretório | `mkdir [opções] ` | `!mkdir -p projetos/novo` |\n", "| | touch | Criar arquivo vazio | `touch ` | `!touch arquivo.txt` |\n", "| | cp | Copiar arquivos/diretórios | `cp [opções] ` | `!cp -r /src /backup` |\n", "| | mv | Mover ou renomear | `mv ` | `!mv antigo.txt novo.txt` |\n", "| | rm | Remover arquivos/diretórios | `rm [opções] ` | `!rm -rf diretorio` |\n", "| | > | Redirecionar saída para um arquivo (sobrescrever) | ` > ` | `!df -h > memoria.txt` |\n", "| | >> | Redirecionar saída para um arquivo (acrescentar) | ` >> ` | `!free -m >> memoria.txt` |\n", "| **Visualização de Conteúdo** |\n", "| | cat | Exibir conteúdo de arquivo | `cat ` | `!cat config.ini` |\n", "| | less | Visualizar arquivo paginado | `less ` | `!less log.txt` |\n", "| | head | Mostrar início do arquivo | `head [opções] ` | `!head -n 5 dados.csv` |\n", "| | tail | Mostrar final do arquivo | `tail [opções] ` | `!tail -f error.log` |\n", "| **Busca** |\n", "| | find | Buscar arquivos/diretórios | `find [expressão]` | `!find / -name \"*.txt\"` |\n", "| | grep | Buscar padrões em arquivos | `grep [opções] ` | `!grep -i \"erro\" *.log` |\n", "| **Gerenciamento de Sistema** |\n", "| | df | Uso do espaço em disco | `df [opções]` | `!df -h` |\n", "| | du | Uso de espaço por diretório | `du [opções] [diretório]` | `!du -sh /home` |\n", "| | free | Uso de memória | `free [opções]` | `!free -m` |\n", "| | top | Monitorar processos em tempo real | `top` | `!top -n 1` |\n", "| **Permissões** |\n", "| | chmod | Alterar permissões de arquivo. O modo `755` concede permissões totais para o proprietário (leitura, escrita, execução) e apenas leitura e execução para o grupo e outros usuários. A opção `+x` adiciona permissão de execução ao arquivo. | `chmod [opções] ` | `!chmod 755 script.sh` ou `!chmod +x script.sh` |\n", "| | chown | Alterar proprietário de arquivo | `chown [opções] : ` | `!chown user:group arquivo.txt` |" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Aprendizado de Máquina (Machine Learning): Uma Visão Geral\n", "\n", "O aprendizado de máquina, um subcampo da inteligência artificial, permite que sistemas de computador aprendam com a experiência e façam previsões sem serem explicitamente programados para isso. Ao contrário dos sistemas tradicionais baseados em regras, os algoritmos de aprendizado de máquina melhoram seu desempenho em tarefas específicas ao serem expostos a mais dados, aprendendo padrões e relações ocultas {cite}`mitchell1997machine`.\n", "\n", "Aqui estão alguns pontos importantes sobre aprendizado de máquina:\n", "\n", "* **Dados:** A base do aprendizado de máquina são os dados. Os algoritmos aprendem com dados e usam-nos para fazer previsões ou tomar decisões. Os dados podem ser estruturados (como tabelas) ou não estruturados (como imagens e texto) {cite}`domingos2012few`.\n", "* **Modelos:** No aprendizado de máquina, um modelo é uma representação matemática ou computacional de um sistema ou processo do mundo real. O modelo aprende com os dados e usa esse conhecimento para fazer previsões sobre novos dados {cite}`goodfellow2016deep`.\n", "* **Funções de Custo:** As funções de custo (ou funções de perda) medem o quão bem um modelo está se saindo em uma tarefa. Elas quantificam o erro entre as previsões do modelo e os valores reais, guiando o processo de ajuste dos parâmetros do modelo {cite}`hastie2009elements`.\n", "* **Algoritmos de Otimização:** Os algoritmos de otimização são usados para ajustar os parâmetros do modelo de forma a minimizar a função de custo e melhorar o desempenho {cite}`boyd2004convex`.\n", "* **Tipos de Aprendizado de Máquina:** Existem três principais tipos de aprendizado de máquina:\n", " * **Aprendizado Supervisionado:** O modelo é treinado em um conjunto de dados rotulado, onde cada exemplo de entrada possui uma saída correspondente. O objetivo é aprender um mapeamento entre entradas e saídas para fazer previsões sobre novos dados. Exemplos: classificação de imagens, previsão de preços de casas {cite}`bishop2006pattern`.\n", " * **Aprendizado Não Supervisionado:** O modelo é treinado em um conjunto de dados não rotulado, onde não há saídas correspondentes. O objetivo é descobrir padrões ocultos ou estruturas nos dados. Exemplos: agrupamento de clientes, redução de dimensionalidade {cite}`jain1999data`.\n", " * **Aprendizado por Reforço:** O modelo (agente) aprende interagindo com um ambiente, tomando ações e ajustando seu comportamento com base em recompensas ou penalidades, a fim de maximizar a recompensa ao longo do tempo. Exemplos: jogos, controle de robôs {cite}`sutton2018reinforcement`.\n", " \n", "* **Aprendizado Profundo:** O aprendizado profundo é uma subárea do aprendizado de máquina que utiliza redes neurais com várias camadas (profundas) para aprender representações complexas de dados. Tem sido especialmente eficaz em áreas como visão computacional, processamento de linguagem natural e reconhecimento de fala {cite}`lecun2015deep`.\n", "\n", "O aprendizado de máquina é um campo dinâmico e poderoso, que está revolucionando diversas indústrias e aspectos da vida cotidiana. Com o aumento da disponibilidade de dados e o avanço do poder computacional, espera-se que mais inovações e aplicações transformadoras surjam nos próximos anos {cite}`jordan2015machine`.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercícios Teóricos\n", "\n", "Seja conciso nas respostas, utilize suas próprias palavras e esteja preparado para justificar suas explicações.\n", "\n", "1. **Definição de Inteligência Artificial (IA)** \n", " Como você definiria inteligência artificial (IA) de forma ampla? Quais são os principais desafios e oportunidades que a IA pode trazer para a sociedade no futuro?\n", "\n", "2. **Marcos Históricos da IA** \n", " Quais foram os principais marcos no desenvolvimento da IA? Como esses eventos moldaram a forma como a IA é percebida e aplicada atualmente?\n", "\n", "3. **Evolução e Impactos Futuros da IA** \n", " Como você imagina a evolução da IA nos próximos 20 anos, considerando o surgimento da Inteligência Artificial Geral (AGI)? Quais serão os possíveis impactos dessa evolução e como podemos garantir que seu uso seja seguro e ético?\n", "\n", "4. **Desafios Éticos e Sociais da IA** \n", " Quais são os principais desafios éticos e sociais que o avanço da IA apresenta, como privacidade, viés algorítmico e substituição de empregos? Que soluções ou estratégias podem ser implementadas para mitigar esses problemas?\n", "\n", "5. **Aplicações de Machine Learning** \n", " Como o Machine Learning está transformando diferentes setores da sociedade e da indústria? Escolha um setor (como saúde, finanças ou transporte) e explique como o Machine Learning está sendo aplicado, seus benefícios e os desafios enfrentados.\n", "\n", "> **Observação:** Cite fontes relevantes para apoiar suas explicações.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercício Prático: Testando Comandos Linux no Google Colab\n", "\n", "No Google Colab, você pode usar `%%sh` para rodar múltiplos comandos em uma única célula ou `!` antes de comandos simples para executá-los diretamente. Isso facilita a interação com o sistema de arquivos e a execução de comandos Linux.\n", "\n", "Este exercício tem como objetivo explorar os principais comandos Linux no ambiente do Google Colab, um serviço em nuvem que oferece algumas funcionalidades de terminal e sistemas de arquivos de maneira simulada.\n", "\n", "**Parte I: Preparação do Ambiente**\n", "\n", "- **Acesse o Google Colab**:\n", " - Abra o site [Google Colab](https://colab.research.google.com) e faça login com sua conta Google.\n", " - Crie um novo notebook para este exercício.\n", "\n", "- **Simulação de Diretório de Trabalho**:\n", " - Embora o Colab não funcione como um sistema de arquivos tradicional, você pode simular um diretório usando comandos Linux.\n", "\n", "- **Criando Diretórios**:\n", " - Crie um diretório chamado `exercicio_linux` usando o comando `!`:\n", "\n", " ```python\n", " !mkdir exercicio_linux\n", " ```\n", "\n", "- **Navegando para o Diretório**:\n", " - Altere o diretório de trabalho para o recém-criado usando `%cd`:\n", "\n", " ```python\n", " %cd exercicio_linux\n", " ```\n", "\n", " Use `%%sh` no Colab para executar múltiplos comandos em uma única célula e simular o comportamento de um terminal Linux. Para comandos únicos, use `!`.\n", "\n", "**Parte II: Manipulação de Arquivos**\n", "\n", "- **Criando Arquivos**:\n", " - Use o comando `touch` para criar três arquivos vazios: `memoria.txt`, `processos.txt` e `script.sh`:\n", "\n", " ```python\n", " !touch memoria.txt processos.txt script.sh\n", " ```\n", "\n", "- **Listando Arquivos**:\n", " - Liste os arquivos no diretório atual:\n", "\n", " ```python\n", " !ls -la\n", " ```\n", "\n", "- **Atualizando Arquivos com Informações do Sistema**:\n", " - Use os seguintes comandos para salvar informações do sistema nos arquivos:\n", "\n", " ```python\n", " !df -h > memoria.txt\n", " !free -m >> memoria.txt\n", " !ps aux > processos.txt\n", " ```\n", "\n", "- **Visualizando Conteúdo**:\n", " - Use os comandos `cat`, `head` ou `tail` para visualizar o conteúdo dos arquivos:\n", "\n", " ```python\n", " !cat memoria.txt\n", " ```\n", "\n", " ```python\n", " !cat processos.txt\n", " ```\n", "\n", "**Parte III: Criando um Script com Menu Interativo**\n", "\n", "Nesta parte, você criará um script para atualizar e mostrar as informações do sistema com base nas opções de um menu interativo.\n", "\n", "- **Editando o Script**:\n", " - Adicione o seguinte código ao arquivo `script.sh` usando `%%sh`:\n", "\n", " ```python\n", " %%sh\n", " echo '#!/bin/bash\n", " \n", " # Atualiza os arquivos com informações do sistema\n", " df -h > memoria.txt\n", " free -m >> memoria.txt\n", " ps aux > processos.txt\n", " \n", " # Função para mostrar o menu\n", " menu() {\n", " echo \"Escolha uma opção:\"\n", " echo \"1 - Mostrar memória RAM\"\n", " echo \"2 - Mostrar memória em disco\"\n", " echo \"3 - Mostrar processos\"\n", " echo \"0 - Sair\"\n", " }\n", " \n", " # Função para mostrar a memória RAM\n", " mostrar_ram() {\n", " echo \"Memória RAM:\"\n", " grep -A 5 \"Mem\" memoria.txt\n", " }\n", " \n", " # Função para mostrar a memória em disco\n", " mostrar_disco() {\n", " echo \"Memória em disco:\"\n", " head -n 10 memoria.txt\n", " }\n", " \n", " # Função para mostrar os processos\n", " mostrar_processos() {\n", " echo \"Processos:\"\n", " head -n 10 processos.txt\n", " }\n", " \n", " # Loop principal do menu\n", " opcao=-1\n", " while [ $opcao != 0 ]; do\n", " menu\n", " read -p \"Digite a opção: \" opcao\n", " \n", " case $opcao in\n", " 1)\n", " mostrar_ram\n", " ;;\n", " 2)\n", " mostrar_disco\n", " ;;\n", " 3)\n", " mostrar_processos\n", " ;;\n", " 0)\n", " echo \"Saindo...\"\n", " ;;\n", " *)\n", " echo \"Opção inválida, tente novamente.\"\n", " ;;\n", " esac\n", " \n", " echo \"\"\n", " done' > script.sh\n", " ```\n", "\n", "- **Alterando Permissões**:\n", " - Torne o arquivo `script.sh` executável:\n", "\n", " ```python\n", " !chmod +x script.sh\n", " ```\n", "\n", "- **Executando o Script**:\n", " - Execute o script para interagir com o menu:\n", "\n", " ```python\n", " !./script.sh\n", " ```\n", "\n", "\n", ">>Dicas:\n", ">>- **`!`** é usado para executar comandos simples diretamente em células de Python no Colab.\n", ">>- **`%%sh`** permite rodar múltiplos comandos em uma única célula e é útil quando você quer simular um script shell completo.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conteúdo Extra\n", "\n", "- [**Curso de Python** - Helton Maia](https://heltonmaia.com/pythonbook/intro.html) \n", " Um curso grátis, moderno e didático sobre programação em Python.\n", " \n", "### Vídeos\n", "\n", "- [**Will AI replace programmers?** | Lex Fridman](https://youtu.be/iUqQmXOFrbM?si=Trcy02uDLQGWFB6s) \n", " Lex Fridman discute o impacto da IA no futuro do trabalho dos programadores e desenvolvedores.\n", "\n", "- [**AlphaGo - The Movie** | Full award-winning documentary](https://youtu.be/WXuK6gekU1Y?si=X4C0wMgQQHKWC5Hz) \n", " Um documentário premiado que narra a criação e o sucesso do sistema de IA AlphaGo, desenvolvido pela DeepMind, e sua vitória histórica contra o campeão mundial de Go.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Referências\n", "\n", "```{bibliography}\n", ":bibfiles: references.bib\n", ":filter: docname in docnames\n", "```" ] } ], "metadata": { "colab": { "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.20" } }, "nbformat": 4, "nbformat_minor": 4 }