[Aiffel] 아이펠 40일차 개념 정리 및 회고

Gongsam·2022년 2월 23일
0
post-thumbnail

1. 컴퓨터 이론

1) 멀티태스킹

(1) Concurrency, Parallelism(동시성, 병렬성)

  • 개념
동시성병렬성
하나의 processor가 여러 task를 동시에 수행함유사한 task를 여러 processor가 동시에 수행하는 것

동시성이 요구될 때 병렬성의 효율을 극대화할 수 있다.
⇒ 여러 개의 프로세스가 한 개의 task를 여러 개의 subtask로 쪼개어 동시에 병렬적으로 수행할 수 있기 때문

(2) Synchronous, Asynchronous

  • 동시성에서 주로 다루는 개념

    동기비동기
    앞선 작업이 종료되기를 기다렸다가 다음 작업을 수행하는 방식바운드(어떤 일을 바로 하지 못하고 대기해야할 때를 의미)되고 있는 작업을 기다리는 동안 다른 일을 처리하는 방식
    순차진행. <요청-응답>의 형태가 연속적으로 실행. 요청에 지연이 발생할 경우 대기비순차 진행. 특정 코드의 연산이 끝날 때까지 코드의 실행을 중단하지 않음. 다음 코드를 먼저 실행하며, 중간에 실행되는 코드는 보통 콜백함수로 연결함

(3) 속도 제한

I/O BoundCPU Bound
입,출력에서 데이터 처리에 시간이 소요될 때CPU바운드: 복잡한 수식 계산, 그래픽 작업과 같이 계산량이 큰 경우

(4) 프로세스, 스레드, 프로파일링

  1. 프로세스
  1. 스레드
  • 어떤 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
  • 비유) 프로세스 = 요리사, 스레드 = 요리사의 요리 과정
  1. 프로파일링
  • 코드의 병목을 찾아내고 성능을 측정하는 도구
    • 애플리케이션에서 자원이 가장 집중되는 부분을 정밀하게 찾아내는 기법

(5) Scale-up, Scale-out

Scale upScale out
단일 서버(하드웨어)의 성능을 증가시켜서 더 많은 요청을 처리하는 방법(하나의 컴퓨터 성능을 최적화)동일한 사양의 새로운 서버를 추가, 성능을 향상 시키는 방법(여러 대의 컴퓨터를 한 대처럼 이용)

2. RNN 내용 정리

✔✔✔🤔 은닉층에서 계산된 은닉 상태와 출력층에서의 결과는 뭐가 다를까?

  • 계산식에서의 차이
은닉층 : $h_{t} = tanh(W_{x} x_{t} + W_{h}h_{t−1} + b)$
출력층 : $y_{t} = f(W_{y}h_{t} + b)$
단, 는 비선형 활성화 함수 중 하나.
  - 은닉 상태는 tanh 함수를 이용해 계산하는 값
  - 출력층에서 출력되는 값은 은닉상태와 가중치를 곱하고 bias를 더한 값을 이용해 계산한 값
  - 처음 들어오는 은닉상태의 경우 0으로 초기화

✔✔✔🤔 장기 의존성 문제: 은닉상태가 뒤로 갈 수록 앞선 정보를 기억하지 못한다는 것은 무슨 의미일까?

은닉상태는 셀이 계산하는 과정에 반영된다. 첫 번째 타임 스텝에서 두 번째 타임 스텝으로 넘어간다고 했을 때, 첫 번째 타임 스텝에서 계산된 은닉상태가 두 번째 타임 스텝에서의 은닉상태 계산에 이용된다. 그러면 두 번째 타임 스텝에서의 은닉 상태는 첫 번째, 두 번째 타임 스텝의 은닉 상태에 대한 정보를 담게 된다. 그리고 세 번째 타임 스텝으로 가면 세 번째 타임 스텝 계산에서 앞선 경우와 같이 두 번째 타임 스텝의 은닉 상태를 이용해 세 번째 타임 스텝의 은닉 상태를 계산한다. 당연히 세 번째 스텝의 은닉 상태는 두 번째 은닉 상태와 세 번째 은닉 상태에 대한 정보를 담게 되는데, 두 번째 은닉 상태가 이미 첫 번째 은닉 상태에 대한 정보도 지니고 있기 때문에 결과적으로 세 번째 스텝의 은닉 상태에는 첫 번째와 두 번째 은닉 상태 모두를 반영하게 되는 것이다. 이렇게 계산 과정을 진행하다보면 당연히 끝으로 갈 수록 제일 처음의 은닉상태를 반영하는 정도가 작아질 것이다. 따라서 RNN은 vanishing gradient문제를 겪게 된다.


RNN vs LSTM

RNNLSTM
ht=tanh(Wxxt+Whht1+b)h_{t} = tanh(W_{x} x_{t} + W_{h}h_{t−1} + b)
xtx_{t}ht1h_{t-1}이라는 두 개의 입력이 각각의 가중치에 곱해져 메모리셀의 입력이 됨.
짧은 시퀀스에선 괜찮지만 길수록 성능이 좋지 않음
입력 게이트, 망각 게이트, 출력 게이트를 추가함 = 불필요한 기억은 지우고 기억해야할 정보를 지정.
은닉 상태를 계산하는 식이 Vanilla RNN보다 복잡해짐.
셀 상태(cell state) 추가, 이전 타임 스텝의 셀 상태가 다음 시점의 셀 상태를 구하기 위한 입력으로 이용됨

3. 회고

마지막 DML 날이었다. 초반 목표가 머신러닝에 대한 개괄적인 설명이 가능할 정도의 수준이 되는 거였는데 100퍼센트는 아니어도 일부는 달성했다고 생각한다. 그래도 아직 갈 길이 멀지만.. 데이터를 보고 인사이트를 얻는 거나 어떤 알고리즘을 사용했을 때 좋은 결과가 나올지, 하이퍼파라미터를 어떻게 조정하면 좋을지 아직 모르거나 부족한 것 투성이다.
방학 이후부터는 NLP로 세부분야를 결정해 배우기로 한 만큼 RNN에 대한 이해가 필요했는데 오늘 그래도 이전보다 깊게 이해할 수 있었던 것 같다.

profile
🐬 파이썬 / 인공지능 / 머신러닝

0개의 댓글