7 de junho de 2012

2ª AV de Sistemas Operacionais



Qual a importância dos Sistemas Operacionais?
R. O sistema operacional é importante porque ele quem define o ambiente no qual o usuário interage como computador.

O que é Sistema Operacional?
Um sistema operacional (SO) é uma coleção de programas que inicializam o hardware do computador. Fornece rotinas básicas para controle de dispositivos. Fornece gerência, escalonamento e interação de tarefas. Mantém a integridade de sistema.

Sistema Operacional é o mesmo que Sistema Computacional?
R. Não, pois, o Sistema Operacional (SO) é uma coleção de programas que inicializam o hardware do computador. Já o Sistema Computacional consiste num conjunto de dispositivos eletrônicos (hardware) capazes de processar informações de acordo com um programa (software).

O que é um Sistema Computacional? Defina seus componentes.
R. Um sistema computacional é aquele que automatiza ou apoia a realização de atividades humanas através do processamento de informações. Seus componentes são: Hardware; Software; Informações; Usuários; Procedimentos ou Tarefas; Documentação.

O que é um processo?
Um processo ou tarefa é uma porção de um programa em alguma fase de execução. Um programa pode consistir de várias tarefas, cada uma com funcionamento próprio ou como uma unidade (talvez se comunicando entre si periodicamente).


Estrutura dos Sistemas Operacionais
1. Monolíticos.
R. No modelo monolítico, não há estruturação visível, como o próprio nome diz (mono=um), o SO consiste em um conjunto de procedimentos independentes, que pode chamar uns aos outros e que são combinados em um único programa para formar o kernel (núcleo) do Sistema Operacional. As vantagens são: é simplicidade e grande desempenho e como desvantagem, uma falha pode paralisar todo o núcleo.

2. Em camadas.
R. O SO é dividido em camadas sobrepostas, onde cada módulo oferece um conjunto de funções que podem ser utilizadas por outros módulos. Módulos de uma camada podem fazer referências apenas aos módulos das camadas inferiores. A vantagem neste tipo de estruturação é isolar as funções do SO, facilitando sua alteração e depuração, além de criar uma hierarquia de níveis de acesso que permite proteger as camadas mais internas. Como desvantagem, cada nova camada implica uma mudança no modo de acesso.

3. Máquinas Virtuais.
R. Uma máquina virtual é uma cópia via software que busca simular uma máquina real. Uma máquina virtual (Virtual Machine – VM) pode ser definida como “uma duplicata eficiente e isolada de uma máquina real”. Sua memória, processador e outros recursos são virtualizados. A virtualização é a interposição do software (máquina virtual) em várias camadas do sistema. É uma forma de dividir os recursos de um computador em múltiplos ambientes de execução. Como vantagens: flexibilidade no SO e a desvantagem, como simular diversas máquinas virtuais não é uma tarefa simples, pode ocorrer sobrecarga nesse SO.

4. Arquitetura Micro-kernel;
R. Tem a idéia de tornar o núcleo menor e mais simples possível e para implementar esta idéia o sistema é dividido em processos. Desta forma, sempre que uma aplicação desejar algum serviço ela solicitará ao processo responsável, assim, a aplicação que solicita um serviço é chamada de cliente e o processo que responde a solicitação é chamado de servidor.

5. Cliente-Servidor.
R. Sistemas Cliente-Servidor são modelos de computação que disntiguem dois tipos básicos de equipamentos computacionais: clientes e servidores, sendo interligados entre si e geralmente utilizam uma rede de computadores. Neste modelo, geralmente os servidores agregam as funções mais importantes do sistema, deixando aos clientes apenas o processamento de aplicações mais básicas.


Aulas 5 – Algoritmo para escalonamento de processos

Algoritmos de Escalonamento de Sistemas em Batch:

Três níveis:
Escalonador De Admissão: decide qual job será admitido no sistema. Por exemplo, uma mescla de Jobs orientados a CPU e orientados à E/S; Processos com menor tempo de acesso à CPU e maior tempo de interação com dispositivos de E/S;
Escalonador Da Memória: decisões sobre quais processos vão para a MP: Há quanto tempo o processo está esperando? Quanto tempo da CPU o processo já utilizou? Qual o tamanho do processo? Qual a importância do processo?
Escalonador da CPU: seleciona qual o próximo processo a ser executado;

Algoritmo First-Come First-Served (ou FIFO):
Não-preemptivo (CPU não controla o tempo dos processos!); Processos são executados na CPU seguindo a ordem de requisição; Fácil de entender e programar;
Desvantagem: Ineficiente quando se tem processos que demoram na sua execução;

Algoritmo Shortest Job First (SJF) (o primeiro processo que entra é o mais curto):
Não-preemptivo; Possível prever o tempo de execução do processo (por que percorre todos os processos para verificar qual menor); Menor processo é executado primeiro; Menor turnaround (tempo em que o usuário espera pela saída do processo);
Desvantagem: Baixo aproveitamento quando se tem poucos processos prontos para serem executados;

Shortest Remaining Time Next (SRTN) (executar o processo com menor tempo de execução mais curto.):
Não - Preemptivo; Processos com menor tempo de execução são executados primeiro; Se um processo novo chega e seu tempo de execução é menor do que do processo corrente na CPU, a CPU suspende o processo corrente e executa o processo que acabou de chegar;
Desvantagem: processos que consomem mais tempo podem demorar muito para serem finalizados se muitos processos pequenos chegarem!


Algoritmos de Escalonamento para Sistemas Interativos:
Utilizam escalonamento em dois níveis (escalonador da CPU e memória);

Algoritmo Round-Robin:
Antigo, mais simples e mais utilizado; Preemptivo; Cada processo recebe um tempo de execução chamado quantum; ao final desse tempo, o processo é suspenso e outro processo é colocado em execução; Escalonador mantém uma lista de processos prontos; Quantum: se for muito pequeno, ocorrem muitas trocas diminuindo, assim, a eficiência da CPU; se for muito longo o tempo de resposta é comprometido;

Algoritmo com Prioridades:
Cada processo possui uma prioridade > os processos prontos com maior prioridade são executados primeiro; Prioridades são atribuídas dinâmica ou estaticamente; Classes de processos com mesma prioridade; Preemptivo;
Como evitar que os processos com maior prioridade sejam executados indefinidamente?
Diminuir a prioridade do processo corrente a cada interrupção do relógio e trocá-lo pelo próximo processo assim que sua prioridade caia abaixo da prioridade do próximo processo com prioridade mais alta (chaveamento); Atribuir um quantum máximo no qual o processo pode executar;

Algoritmo de Múltiplas Filas:
CTSS (Compatible Time Sharing System); Classes de prioridades; Preemptivo; Cada classe de prioridades possui quantum diferentes; Assim, a cada vez que um processo é executado e suspenso ele recebe mais tempo para execução, mas passa para uma fila com menor prioridade de execução.

Algoritmo Shortest Process Next(Próximo processo mais curto.);
Mesma idéia do Shortest Job First; Processos Interativos: não se conhece o tempo necessário para execução; Solução: realizar uma estimativa com base no comportamento passado e executar o processo cujo tempo de execução estimado seja o menor;

Algoritmo Garantido;
Garantias são dadas aos processos dos usuários; Exemplo: n processos > 1/n do tempo de CPU para cada processo: Deve ser mantida taxa de utilização de cada processo; Tem prioridade o que estiver mais distante do prometido. Difícil de implementar.

Algoritmo Lottery;
Cada processo recebe “tickets” que lhe dão direito de execução; A cada troca de processo um “tickets” é sorteado; O dono dos “tickets” sorteado recebe o direito de ocupar a CPU; Possível definir prioridade entre os processos por meio do número de “tickets” atribuído a cada processo; Fácil de implementar e de adaptar.


Algoritmo por Fração Justa (Fair-Share);
O escalonamento é feito considerando o dono dos processos; Cada usuário recebe uma fração da CPU e processos são escalonados visando garantir essa fração; Se um usuário A possui mais processos que um usuário B e os dois têm a mesma prioridade, os processos de A demorarão mais que os do B.

Algoritmos de Escalonamento de Sistemas em Tempo Real:
Tempo é um fator crítico; Sistemas críticos: Aviões; Hospitais; Usinas Nucleares; Bancos; Multimídia;
Ponto importante: obter respostas em atraso é tão ruim quanto não obter respostas;

Tipos de STR:
Hard Real Time: atrasos não são tolerados: Aviões, usinas nucleares, hospitais;
Soft Real Time: atrasos são tolerados: Bancos; Multimídia;
Programas são divididos em vários processos; Eventos causam a execução de processos: Periódicos: ocorrem em intervalos regulares de tempo; Aperiódicos: ocorrem em intervalos irregulares de tempo;
Algoritmos podem ser: Estáticos: decisões de escalonamento antes do sistema começar;
Informação disponível previamente; Dinâmicos: decisões de escalonamento em tempo de execução;

Aula 06 –Thread

Processos
Sistemas Operacionais tradicionais: Cada processo tem um único espaço de endereçamento e um único fluxo de controle. Existem situações onde é desejável ter múltiplos fluxos de controle compartilhando o mesmo espaço de endereçamento: Solução: THREADS

THREADS
Um processo tradicional (pesado) possui um contador de programas, um espaço de endereço e apenas uma thread de controle (ou fluxo de controle);
Multithreading: Sistemas atuais suportam múltiplas threads de controle, ou seja, pode fazer mais de uma tarefa ao mesmo tempo, servindo ao mesmo propósito;

Thread é uma entidade básica de utilização da CPU. Também conhecidos como processos leves (lightweight process ou LWP); Processos com múltiplas threads podem realizar mais de uma tarefa de cada vez; Processos são usados para agrupar recursos; Threads são as entidades escalonadas para execução na CPU: A CPU alterna entre as threads dando a impressão de que elas estão executando em paralelo; Como cada thread pode ter acesso a qualquer endereço de memória dentro do espaço de endereçamento do processo, uma thread pode ler, escrever ou apagar a pilha de outra thread; Não existe proteção pois: Não é necessário pois, diferente dos processos que podem pertencer a diferentes usuários, as threads são sempre de um mesmo usuário.

Razões para existência de threads:
Em múltiplas aplicações ocorrem múltiplas atividades “ao mesmo tempo”, e algumas dessas atividades podem bloquear de tempos em tempos; As threads são mais fáceis de gerenciar do que processos, pois elas não possuem recursos próprios > o processo é que tem!
Desempenho: quando há grande quantidade de E/S, as threads permitem que essas atividades se sobreponham, acelerando a aplicação; Paralelismo Real em sistemas com múltiplas CPUs.

Considere um navegador WEB:
Muitas páginas WEB contêm muitas figuras que devem ser mostradas assim que a página é carregada;
Para cada figura, o navegador deve estabelecer uma conexão separada com o servidor da página e requisitar a figura > tempo; Com múltiplas threads, muitas imagens podem ser requisitadas ao mesmo tempo melhorando o desempenho;

Benefícios das Threads:
Capacidade de resposta: aplicações interativas. Ex.: servidor WEB;
Compartilhamento de recursos: mesmo endereçamento, memória, recursos;
Economia: criar e realizar chaveamento de threads é mais barato;
Utilização de arquiteturas multiprocessador: processamento paralelo;

Tipos de threads:
Em modo usuário (espaço do usuário):
Implementadas por bibliotecas no espaço do usuário; Criação e escalonamento são realizados sem o conhecimento do kernel; Sistema Supervisor (run-time system): coleção de
procedimentos que gerenciam as threads; Tabela de threads para cada processo;
Cada processo possui sua própria tabela de threads, que armazena todas a informações referentes à cada thread relacionada àquele processo;
Vantagens: Alternância de threads no nível do usuário é mais rápida do que alternância no kernel; Menos chamadas ao kernel são realizadas; Permite que cada processo possa ter seu próprio algoritmo de escalonamento; Podem ser implementado em Sistemas Operacionais que não têm threads.
Principal desvantagem: Processo inteiro é bloqueado se uma thread realizar uma chamada bloqueante ao sistema;

Em modo kernel:
Suportadas diretamente pelo SO;
Criação, escalonamento e gerenciamento são feitos pelo kernel:
Tabela de threads e tabela de processos separadas: As tabelas de threads possuem as mesmas informações que as tabelas de threads em modo usuário, só que agora estão implementadas no kernel;
Vantagem: Processo inteiro não é bloqueado se uma thread realizar uma chamada bloqueante ao sistema;
Desvantagem: Gerenciar threads em modo kernel é mais caro devido às chamadas de sistema durante a alternância entre modo usuário e modo kernel;

Modelos Multithreading:
Muitos-para-um: (Green Threads e GNU Portable Threads)
Mapeia muitas threads de usuário em apenas uma thread de kernel;
Não permite múltiplas threads em paralelo em multiprocessadores;
Gerenciamento Eficiente
Se uma bloquear todas bloqueiam

Um-para-um: (Linux, Família Windows, OS/2, Solaris 9)
Mapeia para cada thread de usuário uma thread de kernel;
Permite múltiplas threads em paralelo;
Problema – criação de thread no kernel prejudica o desempenho.

Muitos-para-muitos: (Solaris até versão 8, HP-UX, Tru64 Unix, IRIX)
Mapeia para múltiplos threads de usuário um número menor ou igual de threads de kernel;
Permite múltiplas threads em paralelo;


Estados das Threads: executando, pronta, bloqueada;
Comandos para manipular threads: Thread_create; Thread_exit; Thread_wait; Thread_yield (permite que uma thread desista voluntariamente da CPU);

Aula 07 –Deadlock

Dispositivos e recursos são compartilhados a todo o momento: impressora, disco, arquivos, etc...;
Deadlock: processos ficam parados sem possibilidade de poderem continuar seu
processamento;

Recursos
Recursos: objetos acessados, os quais podem ser tanto hardware quanto uma informação.
Preemptivos: podem ser retirados do processo sem prejuízos: Memória; CPU;
Não-preemptivos: não podem ser retirados do processo, pois causam prejuízos: CD-ROM; Unidades de fita;
DEADLOCKS ocorrem com recursos não-preemptivos;

Operações sobre recursos/dispositivos:
Requisição do recurso; Utilização do recurso; Liberação do recurso;

Se o recurso requerido não está disponível, duas situações podem ocorrer:
Processo que requisitou o recurso fica bloqueado até que o recurso seja liberado, ou;
Processo que requisitou o recurso falha, e depois de um certo tempo tenta novamente requisitar o recurso;
Aquisição do recurso:
Para alguns tipos de recursos, os processos dos usuários gerenciam o uso dos recursos, através, por exemplo, de semáforos: Exemplo: acesso a registros em um sistema de banco de dados.
Se vários processos tentam acessar os mesmos recursos, podem ocorrer situações onde a ordem de solicitação dos recursos pode conduzir ao um deadlock ou não.

O que é um DEADLOCK?
R. “Um conjunto de processos estará em situação de deadlock se todo processo pertencente ao conjunto estiver esperando por um evento que somente um outro processo desse mesmo conjunto poderá fazer acontecer.”

Quatro condições para que ocorra um deadlock:
Exclusão mútua: cada recurso pode estar somente em uma de duas situações: ou associado a um único processo ou disponível;
Posse e espera (hold and wait): processos que já possuem algum recurso podem requer outros recursos;
Não-preempção: recursos já alocados não podem ser retirados do processo que os alocou; somente o processo que alocou os recursos pode liberá-los;
Espera Circular: um processo pode esperar por recursos alocados a outro processo;
Todas as condições devem ocorrer para que ocorra um deadlock.

Geralmente, deadlocks são representados por grafos a fim de facilitar sua detecção, prevenção e recuperação:
Ocorrência de ciclos pode levar a um deadlock;
a) Recurso R alocado ao Processo A;
b) Processo B requisita Recurso S;
c) Deadlock.





Aula 8 - Gerenciamento de Memória

Memória - recurso muito importante;
Tendência atual do software: Lei de Parkinson: “Os programas se expandem para preencher a memória disponível para eles” (adaptação);
Requisitos: Muito grande; Rápida; Não volátil; Baixo custo.
Hierarquia de Memória:
Cache – vários sub-níveis: Pequena quantidade – k/M bytes; Alto custo por byte; Muito rápida; Volátil.
Memória Principal: Quantidade intermediária – M/G bytes; Custo médio por byte; Velocidade média; Volátil.
Disco: Grande quantidade – G/T bytes; Baixo custo por byte; Lenta; Não volátil.
Para cada tipo de memória: gerenciar espaços livres/ocupados; Alocar processos/dados na memória; Localizar dado.
Entre os níveis de memória: Gerenciar trocas.

Gerenciador de memória: responsável por alocar e liberar espaços na memória para os processos em execução; também responsável por gerenciar chaveamento entre os níveis de memória: principal e disco; principal e cache.
A função principal da memória é a alocação de áreas contíguas (memória) e fragmentação dos dados em memória.

Tipos básicos de gerenciamento:
Com paginação (chaveamento): Processos são movidos entre a memória principal e o disco; artifício usado para resolver o problema da falta de memória; Se existe MP suficiente não há necessidade de se ter paginação;
Sem paginação: não há chaveamento;

Monoprogramação:
Sem paginação: gerenciamento mais simples; Apenas um processo na memória;

Modelo de Multiprogramação:
Múltiplos processos sendo executados; Eficiência da CPU;
Vários processos na memória: como proteger os processos uns dos outros? E kernel de todos os processos? Como tratar a realocação? Todas as soluções envolvem equipar a CPU com um hardware especial: MMU (memory management unit).

Realocação:
Quando um programa é montado (link), i.e. programa principal + rotinas do usuário + rotinas da biblioteca > executável, o montador (linker) deve saber em que endereço o programa irá iniciar na memória;
Nesse caso, para que o montador não escreva em um local indevido (por exemplo na área do SO), é preciso de realocação.

Proteção:
Com várias partições e programas ocupando diferentes espaços da memória é possível acontecer um acesso indevido;
Solução para ambos os problemas:
Dois registradores > base e limite:
Quando um processo é escalonado o registrador - base é carregado com o endereço de início da partição e o registrador - limite com o tamanho da partição; O registrador - base torna impossível a um processo uma remissão a qualquer parte de memória abaixo de si mesmo. Automaticamente, a MMU adiciona o conteúdo do registrador - base a cada endereço de memória gerado; Endereços são comparados com o registrador - limite para prevenir acessos indevidos;

Partições
Particionamento da memória pode ser realizado de duas maneiras:
Partições fixas (alocação estática): Tamanho e número de partições são fixos (estáticos); Não é atrativo, porque partições fixas tendem a desperdiçar memória (Qualquer espaço não utilizado é literalmente perdido); Mais simples;

Partições variáveis (alocação dinâmica): Tamanho e número de partições variam; Otimiza a utilização da memória, mas complica a alocação e liberação da memória; Partições são alocadas dinamicamente; SO mantém na memória uma lista com os espaços livres; Menor fragmentação interna e grande fragmentação externa; Solução: Compactação;

Minimizar espaço de memória inutilizado:
Compactação: necessária para recuperar os espaços perdidos por fragmentação; no entanto, muito custosa para a CPU;
Técnicas para alocação dinâmica de memória:
Bitmaps: Memória é dividida em unidades de alocação em kbytes; Cada unidade corresponde a um bit no bitmap: 0 > livre 1 > ocupado; Tamanho do bitmap depende do tamanho da unidade e do tamanho da memória; Ex.: Unidades de alocação pequenas > bitmap grande; Unidades de alocação grandes > perda de espaço;
Listas Encadeadas.

O que fazer quando não existe espaço suficiente para todos os processos ativos?
Swapping
Chaveamento de processos inteiros entre a memória principal e o disco. Transferência do processo da memória principal para a memória secundária (normalmente disco): Swap-out; Transferência do processo da memória secundária para a memória principal: Swap-in; Pode ser utilizado tanto com partições fixas quanto com partições variáveis;
Overlays > Memória Virtual
Programas são divididos em pedaços menores; Pedaços são chaveados entre a memória principal e o disco.

Memória Virtual (MV)
Programas maiores que a memória eram divididos em pedaços menores chamados overlays > programador;
Desvantagem: custo muito alto;
Memória Virtual: Sistema operacional é responsável por dividir o programa em overlays;
Sistema operacional realiza o chaveamento desses pedaços entre a memória e o disco;


5 de junho de 2012

2ª Avaliação de Inteligência Artificial

Revisão para 2ª AV de Inteligência Artificial. 

1. Defina o que é uma Rede Neural com aprendizado supervisionado. 

R. É uma rede onde existe um facilitador que tem conhecimento prévio sobre o ambiente. Esse conhecimento é representado por um conjunto de exemplos históricos armazenados. E é fornecida uma referência do objetivo a ser alcançado. Um exemplo é um aprendizado por correção de erro; O erro de uma Rede Neural pode ser calculado como a diferença entre a saída real gerada pela rede e a saída desejada. 

2. Quais os elementos fundamentais de uma Rede Neural? Ilustre e exemplifique. 

R. - A função das Unidades De Processamento: 
Cada unidade é caracterizada por três elementos básicos, um conjunto de conexões de entrada, um estado de ativação e um valor de saída (resposta). 
- Uma rede pode possuir uma das seguintes Topologias: 
Redes Neurais Diretas (Feedforward): São Redes em camadas. 
Redes Neurais Recorrentes: Este tipo de rede contém pelo menos um ciclo (realimentação, retroação ou “feedback”) no seu grafo. Podem ser compostas por uma ou mais camadas sendo que cada neurônio fornece o seu sinal de saída como entrada para cada um dos outros neurônios; 
Redes Neurais Construtivas: São redes que constroem gradualmente suas próprias estruturas até atingirem uma solução satisfatória. 
- A estratégia ou Algoritmo De Aprendizagem: 
Escolha de um algoritmo de aprendizagem apropriado em que uma função, a partir de exemplos da amostra, seleciona uma determinada função, de um conjunto de funções existente, para melhor aproximação dos dados ideais. Podendo ser: aprendizagem supervisionada, não supervisionada e por reforço. 

3. Descreva O Neurônio Biológico e suas principais estruturas. 
R. Um neurônio biológico constitui-se de axônio que conduz o sinal neural representado de algum modo de um determinado conhecimento processado pelo corpo celular, dendrito que são ramificações que capitam estímulos que pode ou não vir de outro neurônio, nessas ramificações contem a sinapse, que um é canal entre os neurônios, possibilitando a transmissão sináptica conduzindo assim o sinal neural, resultado este de um impulso nervoso e consequência da atividade do potencial de ação, sendo ele o menor estimulo capaz de causar um estimulo limiar. 

4. Descreva: Entradas, Saídas e Função de Ativação em uma Rede neural artificial. 
R. As entradas de uma rede neural recebem dados da saída de outros neurônios artificiais, também capitam os estímulos, que são processados pela função de soma, possuindo também uma função de transferência que equivale ou estimulo, e as saídas que para outro neurônio podem ser uma entrada. 

5. Processe a operação Lógica NAND usando Perceptron. (NAND é Negação do AND) 
R. 0 = falso 1 = verdadeiro 

6. Classifique uma rede Neural quanto ao aprendizado. 
R- Uma Rede Neural pode ser classificada pelo aprendizado Supervisionado (requer um instrutor), Não – Supervisionado (aprende por tentativa e erro) e por Reforço (aprende por auto-estímulo). 
A propriedade mais importante das redes neurais é a habilidade de aprender de seu ambiente e com isso melhorar seu desempenho. Isso é feito através de um processo iterativo de ajustes aplicado a seus pesos, o treinamento. O aprendizado ocorre quando a rede neural atinge uma solução generalizada para uma classe de problemas. 

7. Defina o que é uma Rede Neural. 
R- Redes Neurais Artificiais são técnicas computacionais que apresentam um modelo matemático inspirado na estrutura neural de organismos inteligentes e que adquirem conhecimento através da experiência. 

8. Quais os elementos fundamentais de um Perceptron? Ilustre e exemplifique. 
R- Os elementos são: Entrada, Pesos, Função de Soma, Função de Transferência, Saída. 
Ilustração: 
Exemplificação: 
O Perceptron foi o primeiro Modelo de RNA. Ele é um programa que aprende conceitos, recebe e estuda os Valores de Entrada podendo responder com Verdadeiro ou Falso, tem como regra de aprendizagem a Regra de Aprendizagem Perceptron. E possui duas Camadas constituindo-se de Neurônios que possui a função Threshold que é uma função de Transferência. 
Ou... 

9. Processe a operação Lógica AND usando Perceptron. 
R- 0 = falso 1 = verdadeiro

10. Dê um exemplo de Tutor de uma Rede Neural com aprendizado supervisionado. 
R. No aprendizado supervisionado, um Tutor (PROFESSOR) apresenta à rede neural alguns conjuntos de padrões de entrada e seus correspondentes padrões de saída. 

11. Uma Rede Neural que visa atuar na previsão do tempo implementa que tipo de aprendizado ?. Justifique 
R. O algoritmo de retro - propagação de erro que é um algoritmo para o aprendizado-supervisionado de uma rede neural do tipo MLP (Multi Layers Perceptron) que é composto de dois passos: um passo para frente, a propagação e um passo para trás, a retro - propagação. 

Por ser uma aprendizagem de problemas complexos, ou seja, envolve muitas variáveis de entrada para uma saída esperada. 

12. Dê um exemplo de Tutor de uma Rede Neural com aprendizado não supervisionado. 
R. O treinamento não supervisionado, não possui tutor, ou seja, a rede é capaz de descobrir estaticamente, padrões relevantes aos dados de entrada, não o conhecimento de saídas desejadas. 

13. Interprete a fórmula 
R. É um Algoritmo de Treinamento do Perceptron, onde: 
W(i) = vetor de pesos; 
t = contador dos passos do algoritmo; 
α = (alfa) taxa de aprendizagem, uma constante positiva entre 0 e 1; 
d(i) = resposta desejada; 
y(i) = resposta real. 
Mede-se o erro ou desvio do esperado: e = Abs (di - yi); 

14. O que é Perceptron? 
R. O Perceptron é a forma mais simples de uma RNA (Rede Neural Artificial) usada para classificação de padrões linearmente separáveis, ou seja, padrões que estão em lados opostos de um hiperplano. Consiste basicamente de um único neurônio com pesos sinápticos ajustáveis e uma polarização (bias). 

15. Explique os princípios da Aprendizagem Supervisionada, da Aprendizagem Não – Supervisionada e da Aprendizagem por Reforço. 
R. No caso da Aprendizagem Supervisionada, assume-se a presença de um “professor”, onde são fornecidas as respostas corretas para cada situação. A aprendizagem é realizada a partir de exemplos (instâncias ou casos de treino) compostos por um vetor de entradas e por um vetor de saídas desejadas. 
No caso da Aprendizagem Não Supervisionada, não é fornecida nenhuma indicação externa, a aprendizagem é realizada pela descoberta de regularidades (semelhanças) nos dados de entrada, procurando agrupamentos (clustering) dos exemplos de treino. Nesse caso, observa-se uma convergência lenta no resultado. Esse tipo de aprendizagem pode ser comparado ao desenvolvimento das células simples do córtex visual estriado. 
No caso da Aprendizagem por Reforço não há um facilitador. Dado um padrão de entrada, as unidades competem entre si para decidir qual delas será a vencedora. A unidade vencedora tem a sua saída ativada e seus pesos são atualizados 

16. Quais os passos para o aprendizado de uma Rede Neural? 
R. 1º A RN recebe estímulos do meio externo; 2º Em seguida responde aos estímulos recebidos, 3º logo após, recebe um retorno a respeito da sua resposta; 4º adapta seus parâmetros com vistas a aprender; 5º responde de uma maneira nova ao ambiente e volta ao 1º passo. 

17. Qual a classificação das RN? 
R. Quanto ao Número de Camadas: Redes de camada única; Redes de múltiplas camadas. 
Quanto ao Tipo de Conexão: feedforward (acíclica); feedback (cíclica). 
Quanto ao Tipo de conectividade: Parcialmente conectada; Completamente conectada. 

18. Quais os elementos fundamentais de uma Rede Neural Natural? Ilustre e exemplifique. 
R. Axônio, dendritos, corpo celular, sinapse, ramificações e estímulos. 

19. A partir do mapa mental, descreva as etapas de funcionamento de um neurônio natural. 
R. Os Neurônios interconectam-se com outros Neurônios. Esses neurônios são constituídos de um Corpo Celular que processa e transmite conhecimento através de Soma. Eles também possuem Axônios que conduz um Sinal Neural e representam de algum modo, um determinado conhecimento. Outra parte do Neurônio é o Dendrito, são ramificações que contem a sinapse e possibilita a Transmissão Sináptica realizando a passagem do Sinal Neural que é resultado de um Impulso Nervoso e consequência da atividade do Potencial de Ação e é o menor estímulo capaz de causar um Estímulo Limiar. A Sinapse também é um canal de comunicação entre dois Neurônios. 

20. Descreva o mapa mental do Perceptron. 
R. O Perceptron foi o primeiro Modelo de RNA. Ele é um programa que aprende conceitos, recebe e estuda os Valores de Entrada podendo responder com Verdadeiro ou Falso, tem como regra de aprendizagem a Regra de Aprendizagem Perceptron. E possui duas Camadas constituindo-se de Neurônios que possui a função Threshold que é uma função de Transferência. 

21. A partir do mapa mental, descreva as etapas de funcionamento de um neurônio artificial: 
R. O Neurônio Artificial é uma Estrutura lógica Matemática que estabelece contatos entre Pesos. Os Neurônios Artificiais possuem Entradas, Pesos, Função Soma, Função Transferência e Saída. As Entradas equivalem ao Dendrito e captam Estímulos que são processados pela Função Soma. Os Pesos simulam as Sinapses que são processadas na Função Soma em seguida na Função de Transferência que equivale ao Estímulo limiar gerando a Saída, onde pode ser para outro Neurônio Artificial uma Entrada.