ML | DL/혼자공부하는머신러닝딥러닝

1~2강. 인공지능, 머신러닝 그리고 딥러닝이란 무엇인가? | 코랩과 주피터 노트북으로 손코딩 준비하기

묘걍 2023. 11. 2. 20:34

👉🏻 인공지능

- 사람처럼 학습하고 추론할 수 있는 지능을 가진 시스템을 만드는 기술

 

👉🏻 인공지능의 발전사

출처: 강사님 화면

🧩 인공지능 태동기

- 인공지능의 꿈이 부풀어 올랐던 시기

- 1943: 월터피츠와 워런 맥컬러가 최초로 뉴런의 개념을 정립

더보기

월터 피츠(Walter Pitts)와 워런 맥컬러(Warren McCulloch)는 뇌의 동작을 모방하기 위해 MCP(McCulloch-Pitts Neuron) 뉴런 모델을 개발했다.

MCP 뉴런은 뇌의 작은 단위로 생각할 수 있으며, 간단한 규칙에 따라 동작한다. MCP 뉴런은 두 가지 주요 부분으로 구성된다.

  1. 입력: MCP 뉴런은 여러 개의 입력을 받을 수 있다. 이 입력은 뇌에서 오는 신호와 같이 생각할 수 있다. 예를 들어, 눈으로 무엇인가를 보고, 귀로 소리를 듣는 것이 입력이다.
  2. 출력: MCP 뉴런은 입력을 받고, 이 입력을 기반으로 결정을 내린 후 출력을 생성한다. 이 출력은 MCP 뉴런의 답변 또는 반응으로 생각할 수 있다. 예를 들어, 무언가를 보고 그게 과자인지 아니면 과일인지 판단하는 것이 MCP 뉴런의 출력이다.

MCP 뉴런의 동작 규칙은 간단하다. 입력이 주어지면, 각 입력은 가중치와 함께 곱해진다. 그리고 모든 가중치가 합산된 값이 어떤 임계값을 넘으면 MCP 뉴런은 활성화된다. 이것은 무엇인가를 인식하거나 판단하는 일종의 스위치와 같은 역할을 한다.

간단한 예를 들어보겠습니다. MCP 뉴런이 사과를 판단하는 경우를 생각해 보자. 입력으로 "빨간 색"과 "둥글다"라는 두 가지 정보를 받는다. 각 입력에는 가중치가 있고, "빨간 색"은 긍정적인 가중치를 가지고 "둥글다"는 부정적인 가중치를 가진다. 이 두 입력을 곱하고 가중치를 적용하여 그 합이 어떤 임계값을 넘으면 MCP 뉴런은 "사과"라고 판단하는 것이다.

요약하면, MCP 뉴런은 간단한 논리를 사용하여 입력을 받고 출력을 생성하는 뇌의 작은 구성 요소라고 생각할 수 있다. 이것은 뇌의 동작을 모방하기 위해 처음으로 개발된 모델 중 하나이며, 인공 신경망과 딥 러닝의 기반이 되는 개념 중 하나다.

- 튜링 테스트: 인공지능이 사람 수준의 인공지능인지 아닌지 판단

더보기

튜링 테스트란 인공지능이 사람과 대화하는 더 자연스러운 능력을 평가하는 방법이다.

튜링 테스트는 1950년에 앨런 튜링(Alan Turing)에 의해 제안된 개념으로, 인공지능의 능력을 판단하는 방법 중 하나이다.

튜링 테스트의 기본 아이디어는 대화를 통해 컴퓨터가 인간처럼 동작하는 것을 판별하는 것이다.

튜링 테스트는 다음과 같이 진행된다.

  1. 대화 상대자 A와 B, 그리고 인터뷰어 C가 있다.
  2. 인터뷰어 C는 대화 상대 A와 B 중 어느 쪽이 사람이고 어느 쪽이 컴퓨터 프로그램인지 판단해야 한다.
  3. 대화가 일정 시간 동안 진행되고, 인터뷰어 C는 둘 중 어느 쪽이 사람처럼 대화하는지 판단해야 한다.

만약 인터뷰어 C가 사람과 컴퓨터 프로그램을 판별하는 데 어려움을 겪고 컴퓨터 프로그램과의 대화가 사람처럼 자연스럽게 느껴진다면, 그 컴퓨터 프로그램은 "튜링 테스트를 통과했다"고 말할 수 있다.

튜링 테스트는 인공지능의 핵심 목표 중 하나로, 인간과 자연스럽게 상호작용하고 대화할 수 있는 인공지능을 개발하는 데 사용된다.

- 다트머스 AI 컨퍼런스: 많은 과학자들이 인공지능에 대한 장밋빛 전망을 내놓음 → 나중에 틀렸다는 것이 알려짐 (AI 겨울)

🧩 인공지능 황금기

- 퍼셉트론: MCP뉴런을 최초로 구체화/구현, 인공 신경망을 배울 때도 종종 다층 퍼셉트론 등으로 이름을 부름

더보기

퍼셉트론은 간단한 인공신경망 모델이다. 이것은 입력을 받아서 결정을 내리고 출력을 만들어내는 컴퓨터 프로그램 또는 알고리즘이다. 이 모델은 뇌의 동작에서 영감을 받았으며, 주어진 입력에 대한 판단을 내리는 방법을 배우는 것이라고 생각할 수 있다. 예를 들어, 과일을 분류하는 경우, 색깔과 모양과 같은 특징들을 입력으로 받아서 이것이 사과인지 바나나인지 판단하는 역할을 할 수 있다. 이것은 데이터를 기반으로 결정을 내리는 컴퓨터 프로그램이다.

     - 사이킷런에도 퍼셉트론 클래스가 있다

     - 인공신경망의 가장 기본이 되는 알고리즘

- 시각 피질 연구: 고양이 뇌에 전기 자극을 주고, 슬라이드를 보여주면서 고양이 뇌에 어떤 변화가 일어나는지 확인

더보기

데이비드 허블(David Hubel)과 토르스텐 비셀(Torsten Wiesel)의 시각 피질 연구는 뇌에서 시각 정보를 처리하는 방법을 이해하는 데 중요한 연구이다.

이 연구에서, 허블과 비셀은 고양이의 뇌를 연구했다. 그들은 고양이의 시각 피질(뇌에서 시각 정보를 처리하는 부분)을 연구하여 시각 정보 처리의 기본 원리를 밝혀냈다. 이 연구에서 발견한 중요한 개념은 다음과 같다:

  1. 피처 감지: 시각 피질은 특정한 시각적 패턴이나 기능을 감지하는 작은 단위로 구성되어 있다. 이러한 단위를 "세포"라고 부르며, 각 세포는 특정한 시각적 특징에 반응한다. 예를 들어, 어떤 세포는 수평선을 탐지하고 다른 세포는 수직선을 탐지한다.
  2. 계층 구조: 시각 피질은 계층적 구조를 가지고 있으며, 각 계층은 더 복잡한 시각 정보를 처리하기 위해 이전 계층에서 추출한 정보를 조합한다. 이렇게 계층적으로 정보를 처리함으로써 복잡한 시각적 패턴을 이해할 수 있다.
  3. 경험적 학습: 피처 감지 세포들은 경험을 통해 조절된다. 고양이가 시각적 정보를 받아들이며 경험을 쌓는 과정에서 시각 피질의 세포들은 특정한 시각적 패턴에 민감해지거나 덜 민감해진다.

허블과 비셀의 연구는 시각 정보 처리의 기본 원리를 설명하고 인간과 동물의 시각 시스템에 대한 이해를 높였으며, 이후의 신경과학 및 인공지능 연구에 큰 영향을 미쳤다.

     - 우리 뇌의 시각세포가 단계적으로 단순한 화면 모양에서부터 반응 → 점차적으로 복잡한 형태를 인식하는 것을 밝힘

🧩 1차 AI 겨울

- 침체기를 맞음

- 주요 이유: 컴퓨터 성능 한계

- 복잡한 문제를 풀 수 없었음

🧩 AI 붐

- 전문가 시스템으로 이름을 바꿔(?)

🧩 2차 AI 겨울

- 전문가 시스템이 데이터를 많이 모아 놓은다고 해서 의미 있는 진행이 된 건 아님

- 이 시기에도 꾸준히 연구를 진행 → 이들이 현대에 큰 성과를 냄

🧩 이후

- LeNet-5 : 얀르쿤 박사가 만든 인공신경망 알고리즘, 합성곱 신경망 사용.

더보기

LeNet-5는 컴퓨터 비전 분야에서 사용되는 신경망 구조 중 하나이다. 이 모델은 손글씨 숫자를 인식하는 데 사용되며, 1998년에 Yann LeCun과 그의 동료들에 의해 개발되었다.

LeNet-5는 간단한 컨볼루션 신경망(Convolutional Neural Network) 구조로, 다음과 같은 특징을 가지고 있다:

  1. 입력 이미지: LeNet-5는 손글씨 숫자 이미지를 입력으로 받는다. 이러한 이미지는 0부터 9까지의 숫자 중 하나를 나타내는 손글씨로 쓰여진 것이다.
  2. 계층 구조: LeNet-5는 여러 개의 계층으로 구성되어 있으며, 주로 컨볼루션 계층과 풀링 계층으로 구성되어 있다.
  3. 학습: LeNet-5는 학습 데이터를 사용하여 숫자를 인식하는 방법을 학습한다. 학습된 모델은 숫자를 정확하게 분류할 수 있게 된다.
  4. 출력: LeNet-5는 입력된 손글씨 숫자 이미지가 어떤 숫자인지를 인식하고 그 결과를 출력으로 제공한다.

이 모델은 컴퓨터 비전 작업에 많이 사용되며, 손글씨 숫자를 인식하는 데 효과적이다. 이렇게 인식된 숫자 정보는 다양한 응용 프로그램에서 활용된다.

     - 우편번호 숫자를 인식하는 시스템 개발, 실전에 적용

- AlexNet: 이미지넷 데이터를 사용하는 경진대회에서 합성곱 신경망으로 괄목할만한 성적을 냄

더보기

AlexNet은 딥러닝 분야에서 중요한 역할을 한 신경망 아키텍처이다. 이 모델은 이미지 분류 작업을 수행하는 데 사용되며, 2012년 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회에서 큰 주목을 받았다.

AlexNet은 다음과 같은 특징을 가지고 있다:

  1. 입력 이미지: AlexNet은 컴퓨터가 이해할 수 있는 숫자로 된 픽셀로 이루어진 이미지를 입력으로 받는다. 이 이미지는 사물, 동물, 사람 등 다양한 카테고리로 분류될 수 있다.
  2. 깊은 구조: AlexNet은 여러 계층으로 구성된 딥 뉴럴 네트워크이다. 이 계층은 입력 이미지에서 추상적인 정보를 추출하는 역할을 한다. 첫 번째 계층은 이미지의 낮은 수준 특징을 인식하고, 뒤로 갈수록 더 복잡한 특징을 파악한다.
  3. 풀링과 컨볼루션: AlexNet은 컨볼루션(convolution)과 풀링(pooling)과 같은 연산을 사용하여 이미지에서 중요한 특징을 추출한다. 이를 통해 이미지의 공간적인 구조를 유지하면서 계산 효율성을 높인다.
  4. 학습: AlexNet은 수많은 이미지 데이터를 사용하여 학습된다. 이 모델은 이미지와 해당 이미지의 레이블(예: 고양이, 개)을 사용하여 자동으로 학습하며, 정확한 분류를 위해 가중치를 조절한다.
  5. 출력: AlexNet은 입력 이미지를 해당 카테고리로 분류하는 역할을 한다. 예를 들어, 주어진 이미지가 고양이일 확률을 예측하고 가장 높은 확률을 가지는 카테고리로 분류한다.

AlexNet은 이미지 인식 및 분류 작업에서 높은 성능을 보이며, 딥러닝 연구와 응용 프로그램에 중요한 아키텍처로 사용된다.

     - 다른 인공지능 방법보다 훨씬 더 작은 이미지에 있는 여러 물체들을 잘 구분

     - 이 이후로는 이미지 관련된 문제는 합성곱 신경망을 쓰게 되었다

- 텐서플로: 구글에서 딥러닝 라이브러리로 대중화시킴

더보기

텐서플로(TensorFlow)는 구글이 개발한 오픈 소스 기계 학습 프레임워크이다. 이 프레임워크는 기계 학습과 딥러닝 작업을 수행하는 데 사용된다. 텐서플로는 수학적 연산을 수행하는데 도움이 되며, 데이터를 텐서(다차원 배열)로 나타내어 처리한다. 이 텐서플로 프레임워크는 여러 언어(주로 파이썬)에서 사용할 수 있으며, 다양한 기계 학습 모델을 구축하고 학습시키는 데 도움을 준다. 텐서플로는 딥러닝 모델을 만들고 학습시키는 데 널리 사용되며, 많은 연구원과 개발자들이 이를 활용하여 다양한 응용 프로그램을 개발하고 있다.

     - 많은 개발자들이 딥러닝과 인공지능에 대해 배우게 된 계기

- 알파고: 이세돌과의 대국. 전세계적 큰 반향

 

"인공지능은 사람처럼 학습하고 생각하고 추론할 수 있는 지능이 있는 컴퓨터 시스템/알고리즘이다"

 

🤔 인공지능 하면..

영화에 나오는 것 처럼 사람과 구분할 수 없고, 사랑에 빠질 수 도 있는

사람과 동일한 지적 기능을 가진 시스템이라고 생각하기 쉽다.

이런 인공지능이 불가능하다고 단정지을 수는 없지만

현재까지는 이런 수준에 도달하지 못했다.

 

우리가 배우려고 하는, 요즘 이야기되는 인공지능은

사람의 일을 도와주고 반복적인 작업, 안전하고 편리한 생활에 도움을 주는 보조적인 역할을 하는 것이다

🧩 강인공지능

- 인공일반지능, super inteligence 등으로 불린다

- 사람과 구분하기 어려운 지능을 가진 컴퓨터 시스템

🧩 약인공지능

- 우리가 현실에서 접하는 인공지능

- 자율주행 자동차, 음성비서, 알파고

- 보조 역할만 가능

 

 

👉🏻 머신러닝

- 머신러닝은 인공지능의 하위 분야이다

- 소프트웨어와 관련된 부분을 담당한다

- 규칙을 프로그래밍 하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야

🧩 scikit learn

https://scikit-learn.org/stable/

 

scikit-learn: machine learning in Python — scikit-learn 1.3.2 documentation

Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning Algorithms: grid search, cross validation, metrics, and more...

scikit-learn.org

- 어떤 알고리즘이 개발되어 보편적으로 옳고 안정적이라고 생각되면, 널리 쓰이게 하기 위해 라이브러리를 만들어 유통이 된다

- 대표적인 머신러닝 라이브러리로 싸이킷런이 있다.

- 파이썬 API를 두고 있다.

 

👉🏻 딥러닝

- 딥러닝(==인공신경망)은 머신러닝의 하위 분야이다

- 딥러닝은 머신러닝의 알고리즘 중 인공신경망을 쓰는 부류

- 알파고

🧩 텐서플로

- 케라스 API 사용

- 파이썬

 

 

🧩 파이토치

 

 


👉🏻 코랩 (colab)

- 주피터노트북: 컴퓨터 과학 분야에서 많이 사용

     - 브라우저에서 파이썬 실행 및 문서 작성 가능

- 구글이 이 기능을 코랩을 통해 제공하는 것

- google 드라이브나 깃허브에 있는 코드도 가져다 쓸 수 있다

https://colab.research.google.com/?hl=ko

 

Google Colaboratory

 

colab.research.google.com

코랩 고양이 할로윈ver

- 확장자는 ipynb

- 구글 계정 필요

- 동시에 5개 이상의 노트북은 열 수 없다

- 파이썬 및 다양한 머신러닝/딥러닝 라이브러리들을 (로컬 설치 없이)사용할 수 있다

- 제공되는 컴퓨팅 자원이 한정적이지만 간단한 학습용 실습은 충분히 진행할 수 있다

 

🧩 연결

- 호스팅된 런타임에 연결을 누르면 브라우저가 구글 클라우드 서비스 / 컴퓨팅 인스턴스 자원에 연결,

   우리가 작성한 코드를 구글 클라우드에 넘기고 구글 클라우드가 그 코드를 실행후 결과를 다시 내 브라우저로 전달

- 브라우저에서는 계산된 결과만 보여줌

- 파이썬 3버전, 구글 컴퓨트 엔진 백엔드에 연결되었다

- RAM과 디스크 (구글에서 무료로 제공)

🧩 텍스트셀

출처: 기본 페이지

- 더블클릭시 왼쪽은 편집기, 오른쪽은 결과가 나온다

출처: 기본 페이지

- 텍스트를 장식하는 여러 옵션

- HTML이나 Makrdown을 사용해서 작성 가능

- esc키를 누르면 편집 모드 취소

- 셸의 윗부분이나 아랫부분에 커서를 갖다 대면 셸을 추가할 수 있는 버튼이 나타난다

- 왼쪽 위에 있는 버튼을 이용해도 된다

 

🧩 코드셀

 

- 셸의 윗부분이나 아랫부분에 커서를 갖다 대면 셸을 추가할 수 있는 버튼이 나타난다

- 왼쪽 위에 있는 버튼을 이용해도 된다

- 코드셸은 왼쪽에 실행 버튼이 나타난다

- ctrl + Enter를 눌러도 실행된다

- alt + Enter 를 누르면 실행과 동시에 아래쪽에 새로운 셸이 추가된다

- shift + Enter를 누르면 실행과 동시에 아래쪽 셸로 이동한다

🧩 저장

- 파일에서 저장할 옵션 선택

- 파일 형식을 지정해서 다운로드 가능

🧩 새 노트북 열기

 

- 파일 - 새노트를 통해 열기

🧩 GPU

- 딥러닝 때 사용하는 텐서플로는 CPU가 아닌 GPU를 사용한다

- 보통 게임 시 사용하는 Graphic Card

- 딥러닝에서도 사용함

- 화면을 렌더링하는 벡터 연산을 빠르게 해주는 기능을 가지고 있음

- 딥러닝도 많은 벡터 연산을 필요로함

- GPU로 바꾸면 새로 연결됨

- TPU는 특별히 텐서 프로세싱 유닛이라고 구글에서 만든 딥러닝 전용 유닛

     - 구글 클라우드에서만 제공되기 때문에 코랩에서 사용 가능

 

 

 

 

 

 

 

 

 

 

 

 

 

출처: https://youtu.be/J6wehCO_c58?si=NThsyTe_N--DT2OL

https://youtu.be/0l0g7wk9wv4?si=yMjiDJJSaN59v0-C