Capítulo 1: Introdução à IA#

Cover

Conceitos Básicos de IA#

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 [Russell and Norvig, 2016].

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 [Sutton and Barto, 2018]. 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.

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 [Goertzel, 2014]. 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 [Bostrom, 2014].

História e Evolução da Inteligência Artificial#

A IA tem uma rica história, que pode ser traçada em três grandes fases:

Primeiros Conceitos e Antecedentes (1940-1950)#

A ideia de criar máquinas inteligentes remonta aos tempos antigos, mas foi no século XX que os primeiros passos reais foram dados:

  • 1943: [McCulloch and Pitts, 1943] criam um modelo de neurônios artificiais, estabelecendo as bases para redes neurais.

  • 1950: O matemático Alan Turing publica o famoso artigo [Turing, 1950], no qual propõe o Teste de Turing para determinar se uma máquina pode exibir comportamento inteligente indistinguível de um ser humano.

O Nascimento da IA (1956-1970)#

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:

  • 1956: John McCarthy cunhou o termo “inteligência artificial” [McCarthy et al., 1956].

  • 1957: Herbert Simon e Allen Newell desenvolveram o Logic Theorist, considerado o primeiro programa de IA [Newell and Simon, 1957].

Períodos de Otimismo e Inverno da IA (1970-1990)#

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.

Renascimento e IA Moderna (1990-presente)#

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:

  • 1997: O supercomputador Deep Blue, da IBM, derrotou o campeão mundial de xadrez Garry Kasparov [Campbell et al., 2002].

  • 2012: A rede neural AlexNet vence a competição ImageNet, marcando o início da era moderna da visão computacional [Krizhevsky et al., 2012].

  • 2016: O programa AlphaGo, desenvolvido pela DeepMind, derrotou o campeão mundial de Go[Silver et al., 2016].

Timeline da IA#

Ano

Evento Importante

1943

McCulloch e Pitts criam o primeiro modelo de neurônio artificial.

1950

Alan Turing publica o artigo sobre o Teste de Turing.

1956

Conferência de Dartmouth marca o nascimento oficial da IA.

1957

Criação do Logic Theorist, primeiro programa de IA.

1997

Deep Blue derrota o campeão de xadrez Garry Kasparov.

2012

AlexNet impulsiona o uso de redes neurais profundas.

2016

AlphaGo vence o campeão mundial de Go.

Principais Aplicações#

A Inteligência Artificial (IA) tem revolucionado diversos setores e indústrias nos últimos anos, conforme destacado por [Russell and Norvig, 2021]. Suas aplicações são vastas e continuam se expandindo rapidamente. Algumas das principais áreas onde a IA tem sido amplamente utilizada incluem:

  • Assistentes Virtuais: Siri, Alexa e Google Assistant são exemplos populares de IA aplicada para criar assistentes pessoais inteligentes.

  • 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.

  • 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.

  • Automação Industrial: Robôs e sistemas inteligentes otimizam processos de produção, manutenção preditiva e controle de qualidade.

  • 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.

  • Marketing e Vendas: Recomendações personalizadas, segmentação de clientes e chatbots para atendimento são aplicações comuns nessa área.

  • Educação: Sistemas de tutoria inteligente, avaliação automatizada e personalização do aprendizado são exemplos de IA na educação.

  • Segurança: Reconhecimento facial, detecção de ameaças cibernéticas e análise de padrões para prevenção de crimes.

  • 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.

  • 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.

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.

Futuro da IA#

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.

Oportunidades e Benefícios#

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 [Vinuesa et al., 2020]. 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 [Holmes et al., 2019].

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 [Rolnick et al., 2019]. 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 [Kamilaris and Prenafeta-Boldú, 2018].

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 [Wang et al., 2019]. 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 [Fagnant and Kockelman, 2015].

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.

Desafios Éticos e Sociais#

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 [Forum, 2020], 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 [Brynjolfsson and McAfee, 2014].

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 [Russell et al., 2015].

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 [Commission, 2020], é 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.

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 [Floridi and Cowls, 2019].

Ferramentas Essenciais#

Google Colab#

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.

Vantagens de usar o Google Colab:

  • 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.

  • 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.

  • 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.

  • Colaboração Facilitada: Permite que múltiplos usuários trabalhem simultaneamente no mesmo notebook, facilitando a colaboração em projetos de equipe.

  • 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.

Como configurar um notebook no Google Colab

Acessando o Colab:

Criando um Novo Notebook:

  • Clique em “Arquivo” > “Novo Notebook”.

  • Você pode começar a escrever e executar código Python imediatamente.

Configurando o Hardware:

  • Para aproveitar o poder das GPUs, acesse “Ambiente de execução” > “Alterar tipo de ambiente de execução”.

  • Em “Acelerador de hardware”, selecione “GPU” ou “TPU” conforme necessário.

Salvando o Notebook:

  • 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”.

Instalando bibliotecas necessárias

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:

# Instalação de bibliotecas essenciais
!pip install numpy
!pip install opencv-python
!pip install matplotlib
!pip install scikit-image
!pip install scikit-learn

Esses comandos instalam as seguintes bibliotecas:

  • NumPy: Para manipulação de arrays e matrizes.

  • OpenCV: Para processamento de imagens e vídeos.

  • Matplotlib: Para plotagem de gráficos.

  • scikit-learn e Scikit-image: Para algoritmos tradicionais de machine learning e processamento de imagens.

Fazendo upload e download de arquivos

Para trabalhar com dados locais, você pode fazer upload e download de arquivos diretamente no notebook do Colab:

  • Upload de Arquivos: Use o widget de upload de arquivos fornecido pelo Colab.

    from google.colab import files
    uploaded = files.upload()
    

    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.

  • Download de Arquivos: Para baixar arquivos do Colab para o seu computador local.

    from google.colab import files
    files.download('nome_do_arquivo.ext')
    

Conexão com o Google Drive para armazenar e acessar dados

O Google Colab permite montar o Google Drive para acessar e salvar arquivos diretamente.

Montando o Google Drive: Execute o comando abaixo para montar o Google Drive.

from google.colab import drive
drive.mount('/content/drive')

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.

Acessando Arquivos no Google Drive: 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.

import os
caminho = '/content/drive/MyDrive'
os.chdir(caminho)
print("Diretório atual:", os.getcwd())

Salvando Arquivos no Google Drive: Para salvar um arquivo no Google Drive diretamente do Google Colab, use o seguinte código.

import os

# Definindo os caminhos dos arquivos
arquivo_colab = '/content/meu_arquivo.txt'
destino_drive = '/content/drive/MyDrive/meu_arquivo.txt'

# Criando diretórios no Google Drive, se necessário
os.makedirs(os.path.dirname(destino_drive), exist_ok=True)

# Copiando o arquivo para o Google Drive
os.system(f'cp {arquivo_colab} {destino_drive}')

Substitua 'meu_arquivo.txt' pelo nome do seu arquivo real.

Comandos Essenciais do Terminal Linux

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.

Categoria

Comando

Descrição

Sintaxe

Exemplo

Navegação e Listagem

ls

Listar conteúdo do diretório

ls [opções] [diretório]

!ls -la /home

cd

Mudar diretório

cd [caminho]

!cd /var/log

pwd

Mostrar diretório atual

pwd

!pwd

Manipulação de Arquivos e Diretórios

mkdir

Criar diretório

mkdir [opções] <nome>

!mkdir -p projetos/novo

touch

Criar arquivo vazio

touch <nome>

!touch arquivo.txt

cp

Copiar arquivos/diretórios

cp [opções] <origem> <destino>

!cp -r /src /backup

mv

Mover ou renomear

mv <origem> <destino>

!mv antigo.txt novo.txt

rm

Remover arquivos/diretórios

rm [opções] <nome>

!rm -rf diretorio

>

Redirecionar saída para um arquivo (sobrescrever)

<comando> > <arquivo>

!df -h > memoria.txt

>>

Redirecionar saída para um arquivo (acrescentar)

<comando> >> <arquivo>

!free -m >> memoria.txt

Visualização de Conteúdo

cat

Exibir conteúdo de arquivo

cat <arquivo>

!cat config.ini

less

Visualizar arquivo paginado

less <arquivo>

!less log.txt

head

Mostrar início do arquivo

head [opções] <arquivo>

!head -n 5 dados.csv

tail

Mostrar final do arquivo

tail [opções] <arquivo>

!tail -f error.log

Busca

find

Buscar arquivos/diretórios

find <diretório> [expressão]

!find / -name "*.txt"

grep

Buscar padrões em arquivos

grep [opções] <padrão> <arquivo>

!grep -i "erro" *.log

Gerenciamento de Sistema

df

Uso do espaço em disco

df [opções]

!df -h

du

Uso de espaço por diretório

du [opções] [diretório]

!du -sh /home

free

Uso de memória

free [opções]

!free -m

top

Monitorar processos em tempo real

top

!top -n 1

Permissões

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] <modo> <arquivo>

!chmod 755 script.sh ou !chmod +x script.sh

chown

Alterar proprietário de arquivo

chown [opções] <usuário>:<grupo> <arquivo>

!chown user:group arquivo.txt

Aprendizado de Máquina (Machine Learning): Uma Visão Geral#

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 [Mitchell, 1997].

Aqui estão alguns pontos importantes sobre aprendizado de máquina:

  • 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) [Domingos, 2012].

  • 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 [Goodfellow et al., 2016].

  • 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 [Hastie et al., 2009].

  • 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 [Boyd and Vandenberghe, 2004].

  • Tipos de Aprendizado de Máquina: Existem três principais tipos de aprendizado de máquina:

    • 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 [Bishop, 2006].

    • 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 [Jain et al., 1999].

    • 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 [Sutton and Barto, 2018].

  • 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 [LeCun et al., 2015].

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 [Jordan and Mitchell, 2015].

Exercícios Teóricos#

Seja conciso nas respostas, utilize suas próprias palavras e esteja preparado para justificar suas explicações.

  1. Definição de Inteligência Artificial (IA)
    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?

  2. Marcos Históricos da IA
    Quais foram os principais marcos no desenvolvimento da IA? Como esses eventos moldaram a forma como a IA é percebida e aplicada atualmente?

  3. Evolução e Impactos Futuros da IA
    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?

  4. Desafios Éticos e Sociais da IA
    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?

  5. Aplicações de Machine Learning
    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.

Observação: Cite fontes relevantes para apoiar suas explicações.

Exercício Prático: Testando Comandos Linux no Google Colab#

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.

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.

Parte I: Preparação do Ambiente

  • Acesse o Google Colab:

    • Abra o site Google Colab e faça login com sua conta Google.

    • Crie um novo notebook para este exercício.

  • Simulação de Diretório de Trabalho:

    • Embora o Colab não funcione como um sistema de arquivos tradicional, você pode simular um diretório usando comandos Linux.

  • Criando Diretórios:

    • Crie um diretório chamado exercicio_linux usando o comando !:

      !mkdir exercicio_linux
      
  • Navegando para o Diretório:

    • Altere o diretório de trabalho para o recém-criado usando %cd:

      %cd exercicio_linux
      

    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 !.

Parte II: Manipulação de Arquivos

  • Criando Arquivos:

    • Use o comando touch para criar três arquivos vazios: memoria.txt, processos.txt e script.sh:

      !touch memoria.txt processos.txt script.sh
      
  • Listando Arquivos:

    • Liste os arquivos no diretório atual:

      !ls -la
      
  • Atualizando Arquivos com Informações do Sistema:

    • Use os seguintes comandos para salvar informações do sistema nos arquivos:

      !df -h > memoria.txt
      !free -m >> memoria.txt
      !ps aux > processos.txt
      
  • Visualizando Conteúdo:

    • Use os comandos cat, head ou tail para visualizar o conteúdo dos arquivos:

      !cat memoria.txt
      
      !cat processos.txt
      

Parte III: Criando um Script com Menu Interativo

Nesta parte, você criará um script para atualizar e mostrar as informações do sistema com base nas opções de um menu interativo.

  • Editando o Script:

    • Adicione o seguinte código ao arquivo script.sh usando %%sh:

      %%sh
      echo '#!/bin/bash
      
      # Atualiza os arquivos com informações do sistema
      df -h > memoria.txt
      free -m >> memoria.txt
      ps aux > processos.txt
      
      # Função para mostrar o menu
      menu() {
        echo "Escolha uma opção:"
        echo "1 - Mostrar memória RAM"
        echo "2 - Mostrar memória em disco"
        echo "3 - Mostrar processos"
        echo "0 - Sair"
      }
      
      # Função para mostrar a memória RAM
      mostrar_ram() {
        echo "Memória RAM:"
        grep -A 5 "Mem" memoria.txt
      }
      
      # Função para mostrar a memória em disco
      mostrar_disco() {
        echo "Memória em disco:"
        head -n 10 memoria.txt
      }
      
      # Função para mostrar os processos
      mostrar_processos() {
        echo "Processos:"
        head -n 10 processos.txt
      }
      
      # Loop principal do menu
      opcao=-1
      while [ $opcao != 0 ]; do
        menu
        read -p "Digite a opção: " opcao
      
        case $opcao in
          1)
            mostrar_ram
            ;;
          2)
            mostrar_disco
            ;;
          3)
            mostrar_processos
            ;;
          0)
            echo "Saindo..."
            ;;
          *)
            echo "Opção inválida, tente novamente."
            ;;
        esac
      
        echo ""
      done' > script.sh
      
  • Alterando Permissões:

    • Torne o arquivo script.sh executável:

      !chmod +x script.sh
      
  • Executando o Script:

    • Execute o script para interagir com o menu:

      !./script.sh
      

Dicas:

  • ! é usado para executar comandos simples diretamente em células de Python no Colab.

  • %%sh permite rodar múltiplos comandos em uma única célula e é útil quando você quer simular um script shell completo.

Conteúdo Extra#

Vídeos#

Referências#

[Bis06]

Christopher M Bishop. Pattern Recognition and Machine Learning. Springer, 2006.

[Bos14]

Nick Bostrom. Superintelligence: Paths, Dangers, Strategies. Oxford University Press, 2014.

[BV04]

Stephen Boyd and Lieven Vandenberghe. Convex Optimization. Cambridge University Press, 2004.

[BM14]

Erik Brynjolfsson and Andrew McAfee. The Second Machine Age: Work, Progress, and Prosperity in a Time of Brilliant Technologies. W. W. Norton & Company, 2014.

[CHH02]

Murray Campbell, A Joseph Hoane, and Feng-hsiung Hsu. Deep blue. Artificial Intelligence, 134(1-2):57–83, 2002.

[Com20]

missing journal in europeancommission2020

[Dom12]

Pedro Domingos. A few useful things to know about machine learning. Communications of the ACM, 55(10):78–87, 2012.

[FK15]

Daniel J Fagnant and Kara Kockelman. Preparing a nation for autonomous vehicles: opportunities, barriers and policy recommendations. Transportation Research Part A: Policy and Practice, 77:167–181, 2015.

[FC19]

Luciano Floridi and Josh Cowls. A unified framework of five principles for ai in society. Harvard Data Science Review, 2019.

[For20]

World Economic Forum. The future of jobs report 2020. 2020. https://www.weforum.org/reports/the-future-of-jobs-report-2020.

[Goe14]

Ben Goertzel. Artificial general intelligence: concept, state of the art, and future prospects. Journal of Artificial General Intelligence, 5(1):1–48, 2014.

[GBC16]

Ian Goodfellow, Yoshua Bengio, and Aaron Courville. Deep Learning. MIT Press, 2016.

[HTF09]

Trevor Hastie, Robert Tibshirani, and Jerome Friedman. The Elements of Statistical Learning. Volume 2. Springer, 2009.

[HBF19]

Wayne Holmes, Maya Bialik, and Charles Fadel. Artificial intelligence in education. The Learning Agency, 2019.

[JMF99]

Anil K Jain, M Narasimha Murty, and Patrick J Flynn. Data clustering: a review. ACM Computing Surveys (CSUR), 31(3):264–323, 1999.

[JM15]

Michael I Jordan and Tom M Mitchell. Machine learning: trends, perspectives, and prospects. Science, 349(6245):255–260, 2015.

[KPBoldu18]

Andreas Kamilaris and Francesc X. Prenafeta-Boldú. Deep learning in agriculture: a survey. Computers and Electronics in Agriculture, 147:70–90, 2018.

[KSH12]

missing journal in krizhevsky2012imagenet

[LBH15]

Yann LeCun, Yoshua Bengio, and Geoffrey Hinton. Deep learning. Nature, 521(7553):436–444, 2015.

[MMRS56]

John McCarthy, Marvin L Minsky, Nathaniel Rochester, and Claude E Shannon. A proposal for the dartmouth summer research project on artificial intelligence. AI Magazine, 27(4):12, 1956.

[MP43]

Warren S McCulloch and Walter Pitts. A logical calculus of the ideas immanent in nervous activity. The Bulletin of Mathematical Biophysics, 5(4):115–133, 1943.

[Mit97]

Tom M Mitchell. Machine Learning. McGraw-Hill, 1997.

[NS57]

Allen Newell and Herbert A Simon. The chess machine: an example of dealing with a complex task by adaptation. IBM Journal of Research and Development, 1(4):370–374, 1957.

[RDK+19]

David Rolnick, Priya L. Donti, Lynn H. Kaack, Kelly Kochanski, Alexandre Lacoste, Kris Sankaran, Andrew S. Ross, Nikola Milojevic-Dupont, Natasha Jaques, and Anna Waldman-Brown. Tackling climate change with machine learning. arXiv preprint arXiv:1906.05433, 2019.

[RDT15]

Stuart Russell, Daniel Dewey, and Max Tegmark. Research priorities for robust and beneficial artificial intelligence. AI Magazine, 36(4):105–114, 2015.

[RN16]

Stuart Russell and Peter Norvig. Artificial Intelligence: A Modern Approach. Pearson, 3rd edition, 2016.

[RN21]

Stuart Russell and Peter Norvig. Artificial Intelligence: A Modern Approach. Pearson, 2021.

[SHM+16]

David Silver, Aja Huang, Chris J Maddison, Arthur Guez, Laurent Sifre, George Van Den Driessche, Julian Schrittwieser, Ioannis Antonoglou, Veda Panneershelvam, Marc Lanctot, Sander Dieleman, Dominik Grewe, John Nham, Nal Kalchbrenner, Ilya Sutskever, Timothy Lillicrap, Madeleine Leach, Koray Kavukcuoglu, Thore Graepel, and Demis Hassabis. Mastering the game of go with deep neural networks and tree search. Nature, 529(7587):484–489, 2016.

[SB18] (1,2)

Richard S Sutton and Andrew G Barto. Reinforcement Learning: An Introduction. MIT press, 2018.

[Tur50]

Alan M. Turing. Computing machinery and intelligence. Mind, 59(236):433–460, 1950.

[VAL+20]

Ricardo Vinuesa, Hossein Azizpour, Iolanda Leite, Madeline Balaam, Virginia Dignum, Sami Domisch, Katharina Fellnhofer, Sven Langhans, Max Tegmark, and Francesco Fuso Nerini. The global impact of artificial intelligence: an analysis of research trends, business applications, and societal considerations. Communications of the ACM, 63(9):27–29, 2020.

[WLZ+19]

Fengji Wang, Weidong Liu, Jisheng Zhao, Wei Jiang, and Wei Li. Artificial intelligence for smart grid: review and challenges. Renewable and Sustainable Energy Reviews, 100:296–313, 2019.