딥러닝 수업 1일차

박철민·2021년 11월 4일
0

1일 11월 4일

교재 : 처음 배우는 딥러닝 챗봇

딥러닝과 챗봇은 무슨 연관이 있을까?


인공지능 용어 정리

인공지능, 머신러닝, 딥러닝

AI > ML > DL

인공지능 : 보통의 사림이 수행하는 지능적인 작업을 자동화하기 위한 연구활동

지능적인 활동 : 추론/ 예측/ 분류


머신러닝 / 비 머신러닝 이 있다.

비 머신러닝은 무엇이 있을까?
개발자가 경험적인 방법으로 자신만의 노하우를 만드는 것!

머신러닝 이전까지는 프로그래머가 규칙을 직접 코딩하는, 학습 과정이 없는 방법론이 대세

-전문가 시스템

머신러닝 : 데이터로부터 학습하도록 컴퓨터를 프로그래밍하는 과학/기술

"어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상되었다면 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것이다.

-톰 미첼, 1997

프로그램이 최적의 문제 해결 규칙을 스스로 찾도록 구성된 알고리즘

학습

  • 시스템을 문제 해결에 대해 일반화시키는 과정
  • 머신러닝 모델의 오차를 최소화하기 위해 모델 파라미터를 수정해 나가는 과정

-> 오차를 최소화하기 위한 방법으로 한다.

모델 파라미터 값을 조금씩 변경한다.

왜 머신러닝인가?

  • 기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제

  • 전통적인 방식으로는 전혀 해결할 방법이 없는 복잡한 문제

  • 유동적인 환경

전통적인 문제 해결 방법

규칙을 사람이 직접 찾아내어 작성
  • 규칙이 점점 길고 복잡해짐
  • 유지보수 매우 힘듦
  • 변화에 능동적으로 대처하기 어려움

머신러닝의 문제 해결 방법

주어진 데이터와 해답으로부터 훈련을 통해 규칙을 생성
  • 규칙을 알 수 없거나 찾기 힘든 문제 해결 가능
  • 훈련, 평가, 론칭하는 전체 과정을 쉽게 자동화 가능

머신러닝 시스템의 종류

  • 지도 학습
    • 훈련 데이터와 그에 상응하는 레이블 또는 타겟 포함

  • 지도 학습의 종류
    • 분류
      • 데이터가 특정 클래스에 속하는지 예측
    • 회귀
      - 특징을 사용해 타겟 수치를 예측

대표적인 지도 학습 알고리즘

  • k-최근접 이웃
  • 선형 회귀
  • 로지스틱 회귀
  • 서포트 벡터 머신
  • 결정 트리와 랜덤 포레스트
  • 신경망

비지도 학습 - 훈련 데이터에 그에 상응하는 레이블이 없음 ->정답은 주지 않고 데이터값만을 주는 경우

비지도 학습의 종류

  • 군집
    • 훈련 데이터들을 비슷한 그룹으로 묶음
    • k 평균 클러스터링, 병합 클러스터링, DBSCAN 등
  • 차원 축소, 시각화
    • 레이블 없는 고차원 데이터를 도식화 가능토록 2차원 또는 3차원 데이터로 변환
    • 너무 많은 정보를 잃지 않으면서 데이터를 간소화
    • 주성분 분석(PCA), 비음수 행렬 분해 등
  • 이상치 탐지
    • 정상 샘플로 훌련된 시스템이 새로운 샘플이 정상 데이터인지 이상치인지 판단

강화 학습

  • 학습하는 시스템인 에이전트가 환경을 관찰하여 행동을 실행하고 그 결과로 보상 또는 벌점을 받으며 시간이 지나면서 가장 큰 보상을 얻기위해 정책이라는 최상의 전략을 스스로 학습
  • 정책은 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정의

다른 머신러닝 시스템과의 차이점

  • No superviso, 레이블 대신 보상 신호
  • 피드백이 즉각적이지 않고 딜레이되어 들어옴
  • 시간 혹은 스템이 중요: 시퀀셜 데이터
  • 에이전트의 행동이 뒤이어 발생하는 데이터(신호)에 영향을 미침

강화 학습의 예


딥러닝 작동 원리

가중치

  • 입력 데이터는 가중치와 곱해진후 다음 층으로 출력

학습

  • 주어진 입력을 정확한 타겟에 매핑하기 위해 신경망의 모든 층에 있는 가중치를 찾는 것

손실함수(비용함수, 목적 함수)

  • 층의 출력이 기대하는 것보다 얼마나 벗어났는지를 측정
  • 예측과 실제 타겟의 차이를 점수로 계산
  • 손실 함수에 대한 미분

옵티마이저

  • 앞서 구한 점수를 피드백 신호로 사용하여 현재 샘플이 손실 점수가 감소되는 방향으로 가중치 값을 조금씩 수정

딥러닝 작동 원리

  • 역전파 알고리즘
    • 해당 층 출력의 오차에 대한 미분을 이전 층으로 넘기면서 최적의 가중치를 구하는 방법

오차를 작아지는 방향으로 가중치를 조정한다. 오차를 구해야한다. 출력층에 오차를 구해야한다.
은닉층에 오차는 모른다, 출력층에서 전파하고 전파하여 값이 바뀐다.

은닉층이 앞으로 갈수록 오차가 0에 가까워진다.

그레디언트 손실문제라고 한다.

이것을 해결한것이 2005년도에 발표된 역전파 알고리즘이다.


합성곱 신경망(CNN) - 이미지 및 동영상 같은 다차원 데이터를 분류, 분할에 탁월

순환 신경망(RNN)우리가 자주볼 신경망

  • 자연어 처리(NLP)에서 텍스트나 기기 장치이ㅢ 센서 데이터 스트림과 같은 순차적 데이터의 표현을 학습하기에 적합

one to many -> 사진설명 붙이기
many to one -> 감성 분석
many to many -> 번역

챗봇은 문장을 받아서 해야하니까 단어들-> 단어들을 한다.


생성적 적대 신경망

  • 생성자 네트워크 : 잡음으로부터 원본 데이터셋에서 샘플링한 것처럼 보이는 샘플 생성

  • 판별자 네트워크 : 원본 데이터셋에서 추출한 샘플인지 생선자가 만든 가짜인지 구별

  • 두 네트워크 간의 (적대적) 경쟁을 학습

얼마나 감쪽같은 샘플을 만드느냐 얼마나 가짜 샘플을 찾아 내는가


공부 환경

IDE :VsCode, PyCham, Jupyter Notebook, Jupter Lab
scikit-learn

Scikit-learn 필수 라이브러리

NumPy

  • 과학 계산용 필수 패키지
  • NumPy 배열
    • scikit-learn의 기본 데이터 구조
    • ndarray 다차원 배열
    • 배열의 모든 원소는 동일한 데이터 타입
      Scikit-learn의 입력 데이터는 NumPy 배열 구조

SciPy

  • 수학, 과학 및 공학용 오픈 소스 소프트웨어의 파이썬 기반 생태계
  • 과학 계산용 함수를 모아놓은 파이썬 패키지
  • 고성능 선형 대수, 함수 최적화

matplotilib

  • 파이썬의 대표적인 과학 계산용 그래프 라이브러리
  • 선 그래프, 막대 그래프, 히스토그램, 산점도, 상자수염그래프
  • 고품질 래스터 그래픽 지원
  • 데이터와 분석 결과를 다양한 관점의 시각화를 통해 통찰력 얻는데 도움

pandas

  • 데이터 분석과 처리를 위한 빠르고, 강력하고, 유연하면서도 사용하기 쉬운 파이썬 기반 오픈 소스 라이브러리
  • DataFrame 객체를 이용하여 엑셀의 스프레드 시트 및 SQL의 테이블 형태의 데이터를 쉽게 처리할 수 있음
  • 다양한 데이터 소스로부터 데이터를 읽어 들일 수 있음

TensorFlow

  • 구글이 개발하는 머신러닝을 위한 엔드 투 엔드 오픈소스 플랫폼
  • 데이터 흐름에 대한 그래프로써 사용자들이 마음대로 계산을 표현할 수 있게 하는 파이썬 라이브러리

Keras

  • 거의 모든 종류의 딥러닝 모델을 간편하게 만들고 훈련시킬 수 있는 파이썬을 위한 딥러닝 플레임워크

  • 멀티 백엔드 기반 파이썬 고수준 신경망 API

  • TenseorFlow의 기본 라이브러리로 편입

    https://ang-love-chang.tistory.com/26

TensorFlow Vs. Keras

TensorFlow : XOR문제 해결을 위한 퍼셉트론

keras-> TensorFlow에 비해 좀 더 쉽고 간편하게 나온다.



환경 설정

WSL (Windows Subsystem for Linux)
마이크로 소프트 스토어에서 Windows PowerShell을 설치

관리자 권한으로 실행

우분투가 깔린 것을 알 수 있습니다.

리부트를 하면 우분투가 실행됩니다.

비밀번호는 11월 4일 오후 5시 24분 영상속

uname은 시스템에 대한 정보를 출력
-a 옵션은 시스템의 전체 정보를 확인

우분투 접속 후
whoami를 이용해 로그인 정보를 확인

pwd는 print working directory 명령어 입니다.

/는 위치를 표현
~는 tilde
`는 백틱

python 접속

깜빡이는 것은 커서

quit()를 통해 나간다.

root 계정으로 갈려면 권한이 필요로 한다.

리눅스 쉘
셸이란 커널과 사용자간의 다리역할을 하는 것으로 사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행하는 역할을 한다.

커널을 직접 사용하기에는 힘들다 그렇기 때문에 셸을 통해서 사용자가 편하게 사용이 가능하게 해준다.

커널을 감싸면서 ll, ls같은 명령어를 미리 저장해놓는다.

리눅스는 셸을 바꿀수 있다.

커널에 있는 폼을 마음대로 할 수 있다.


셸의 기능
1. 사용자와 커널 사이에서 명령을 해석해 전달하는 명령어 해석기 기능이 있습니다.
2. 셸은 자차 내에 프로그래밍 기능이 있어서 프로그램을 작성할 수 있습니다. 셸 프로그래밍 기능을 이용하면 여러 명령을 사용해 반복적으로 수행하는 작업을 하나의 프로그램으로 제작 할 수 있습니다. 셸 프로그램을 셸 스크립트라고 불러요
3. 사용자 환경 설정의 기능 - 초기화 파일 기능을 이용해 사용자의 환경을 설정할 수 있습니다. 로그인 할 때 이 초기화 파일이 실행되서 사용자의 초기 환경이 설정됩니다. 셸을 공부하는데 가장 중요한 것 중 하나가 환경변수의 이해입니다.

과거에는 사용자가 일일이 찾아야 했다.
그러다가 RPM이라는 것을 만들었습니다.
RPM 레드 햇 패키지 매니저

현재는 YUM이라는 것을 쓰고있는데 우분투의 경우는
APT를 사용하고 있습니다.

APT는 devian 계열로 리눅스 계열 설치, 삭제, 유지보수 같은 것을 자동으로 해주는 것입니다.


APT를 업데이트와 업그레이드 한다.

wget명령어를 통해 ca-certificates를 설치한다.

ssl을 설치

라이브 서버를 설치한다.

python3-pip 설치

오늘은 이것으로 수업이 끝이 났다. 환경설정에 많은 시간을 쏟은 것은 아쉽다.

내일은 교재로 공부가 시작된다. 인공지능이 약하기 때문에 씹어먹는 생각으로 공부하자

profile
취준좀비 컴공

1개의 댓글

comment-user-thumbnail
2021년 11월 5일

정말 유익한 정보네요 ! >_< b

답글 달기