꿀맛같았던 설연휴가 지나고 어느새 한주가 더 지나갔다.
저번주에는 설연휴를 보내느라 블로그를 쓰지 못했다.
그래서 저번주에 배운것과 이번주에 배운것을 같이 정리하고자 한다.
언제나처럼 에러메시지가 난무한 노드들이었다.
그래도 오늘보는 에러메시지가 내일은 바뀌기를 바래본다.
[8주차 정리]
1. Fundametals Node
◈ 컴퓨팅파워 UP
멀티태스킹, 병렬프로그래밍과 동시성에 대해 이해해보자.
- 정리
멀티태스킹이란?
1) 동시성
하나의 processor가 여러 가지 task를 동시에 수행하는 개념.
주방장이 2개의 화구로 라면을 끓이는 것과 같은 느낌.
2) 병렬성
유사한 task를 여러 processor가 동시에 수행하는 것
명의 주방장이 각각 1개씩 라면을 끓이는 것과 같은 느낌.
3) 동시성+병렬성
병렬성의 효율을 극대화하는 것은 동시성이 요구될 때임.
여러개의 프로세스가 1개의 task를 여러 개의 subtask로
쪼개어 동시에 병렬적으로 수행하기 때문.
동기 vs 비동기 (Synchronous vs Asynchronous)
1) 동기
앞 작업이 종료되기를 무조건 기다렸다가 다음 작업을 수행하는 것
2) 비동기
기다리는 동안 다른 일을 처리하는 것
프로세스(Process)
- 하나의 프로그램을 실행할 때, 운영체제는 한 프로세스를 생성한다.
- 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위.
- 프로세스는 작업을 대표하는 이름
스레드(Thread)
- 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위.
- 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위
- 프로세스 안에서 일어나는 작업들
프로파일링(Profiling)
- 현재 실행 중인 프로그램의 상태를 확인하는 작업을 코딩하는 것.
- 어디서 내 컴퓨팅자원을 많이 먹고있나 확인하는 것.
- 프로세스는 작업을 대표하는 이름
Scale Up vs Scale Out
1) Scale Up
컴퓨터 자원을 활용하기 위해 자원을 Up(업그레이드, 최적화)
2) Scale Out
컴퓨터 자원을 활용하기 위해 자원을 Out(확장)
◈ 그나저나 데이터는 어디서 가져오지?
파이썬 프로그래밍을 이용하여 웹에서 데이터에 접근하고 그 데이터를 가져오는 방법에 대해 알아보자.
- 정리
인터넷과 프로토콜
1) 프로토콜
- 데이터 교환과정에서의 규약
- 웹은 HTTP라는 프로토콜에 따라 데이터를 주고받고 있다.
2) 용어정리
1) Communication(통신) :
- 데이터를 보내고 싶은 곳에 원격으로 전송하고 다시 데이터를 수신받는다.
2) HTTP(HyperText Transfer Protocol) :
- 하이퍼텍스트 전송 프로토콜.
3) Protocol(프로토콜) :
- 통신 규약.
4) HyperText :
- 독자가 즉시 액세스 할 수 있는 다른 텍스트에 대한 참조(하이퍼 링크)가
있는 기계(컴퓨터, 등)에 표시되는 텍스트.
- HyperText는 문자열의 일종으로 텍스트이다.
- 그런데, Hyper Text는 인터넷에 표시되어 있는 텍스트를 의미한다.
5) 통신 :
- 원격으로 데이터를 주고받는 것으로서, 쉽게 생각하면 모든 통신은 원거리 대화다.
6) 프로토콜 :
- 통신 규약. 옛날의 봉화 같은 것들도 나름의 프로토콜을 갖추고 있다고 볼 수 있다.
3) 인터넷이란?
- 컴퓨터들 사이의 TCP/IP(Transmission Control Protocol / Internet Protocol)이라는
통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다.
4) TCP(Transmission Control Protocol)란?
- 소켓과 소켓 사이의 peer-to-peer 연결을 구현하는 프로토콜
- 포트 번호를 기준으로 타겟 어플리케이션 소켓으로
정확히 전송될 수 있도록 데이터 흐름을 책임지는 역할
- 간단하게 말하면 물류회사
5) IP(Internet Protocol)란?
- 컴퓨터마다 주어지는 IP 주소 단위의 송수신 프로토콜
- 타겟 주소로 데이터가 정확히 전송되는 것을 책임지는 역할
- 간단하게 말하면 택배기사
API에 대하여
1) URL 예시
- URL을 일반 우편 메일이라 생각한다면
- 프로토콜(scheme)은 사용하고 싶은 우편 서비스
- 도메인 이름(Domain name)은 도시나 마을
- 포트(port)는 우편 번호
- 경로(path)는 메일이 전달되어야 하는 건물을 나타낸다.
- 파라미터는 건물 번호와 같은 정보를 나타낸다.
- anchor(앵커)는 메일을 받는 실제 사람을 나타낸다.
2) API란?
- 여러 어플리케이션 사이에 코드들끼리 서로 소통하기 위해 만들어진 것.
REST API와 RESTful API
1. REST란? Representational State Transfe라는 용어의 약자이다. 자원을 URI로 표시하고 해당 자원의 상태를 주고 받는 것을 의미한다. REST의 구성 요소는 자원(Resource): URI 행위(Verb): HTTP METHOD 표현(Representat
velog.io
◈ 어라, 이 시계열 이상한데?
시계열 데이터에서 이상치 탐색하는 방법에대해 알아보자.
- 정리
시계열 데이터란?
- 관측치가 시간적 순서를 가진 데이터이다.
- 시계열 데이터는 과거의 데이터를 통해서 현재의 움직임 그리고 미래를 예측하는데 사용된다.
- 시계열을 통해 추세(Trend), 계절성(seanality), 랜덤(random) 데이터 등 을
분석하고 앞으로 어떻게 될 것인지 예측해 볼 수 있다.
1) 추세(Trend)
추세라는 것은 말 그대로 경향을 의미한다.
전체적인 흐름을 보았을 때 데이터의 값이 감소하는지 증가하는지 대략적인정보를 보여준다.
2) 계절성(Seasonality)
특정한 기간마다 어떤 패턴을 가지고 반복하는지 확인 할 수 있는 특성이다.
이 데이터를 통해 앞으로 어떻게 변화할 것인지 예측할 수 있다.
3) 랜덤(Random)
노이즈(noise)라고도 불리는 이 데이터는 추세, 계절성 등으로 설명되지 않은 데이터를 의미한다.
전처리를 통해서 최대한 예측하는데 관여하지 않도록 하는 것이 중요하다.
이상한 데이터를 찾아내는 방법(Anomaly Detection)
- 다시 측정한다
- 같은 데이터의 다른 출처를 찾아서 비교한다 (Supervised)
- 데이터 스스로의 특징을 활용해서 찾아낸다 (Unsupervised)
df.isna().sum() : df내부의 각 칼럼의 결측치 합을 출력해준다.
df.dropna(axis=0).reset_index(drop=True) : 결측치를 삭제해 준다.
2. Exploration Node
◈ 뉴스 요약봇 만들기
긴 문장을 짧게 요약해주는 텍스트 요약기를 만들어보았다.
요약의 방법으로 2가지를 소개해주었다.
이전 문장내에 있는 단어들을 조합하여 짧게 만드는 방식과
새로운 단어를 생성하여 요약하는 방식이었다.
아직 밑그림만 그려놓은 노드였지만 모델이 언어를
만들어 내는게 신기하고 재밌는 부분이었던 것 같다.
News Summation project github (차후 링크예정)
◈ 인공지능으로 세상에 없던 새로운 패션 만들기
뭔가 뉴스 요약봇이 자연어처리의 제대로된 시작을 보여주는 느낌이었다면,
이 노드는 컴퓨터 비전의 제대로된 시작을 보여주는 느낌이었다.
이미지를 학습해서 이미지를 만들어내는걸 실시간으로 보는건 흥미로운 경험이었다.
물론 아직 내가 만든 모델은 이미지의 ㅇ도 못하고있지만
제대로된 이미지를 만들기에는 시간이 더 필요한 것 같다.
DCGAN New Image project github (차후 링크예정)
3. 알고리즘
◈ 8주차
이번주에 풀이했던 부분은 10장 데크, 우선순위 큐였다.
여전히 알고리즘은 구렁텅이에 빠져있다.
단순히 진도 따라가기에만 급하다.
정작 기본적인 개념들이 너무 부족하다고 느낀다.
그래도 일단 책하나는 떼고 싶어서 아직 붙어있는 느낌이다.
주말에 알고리즘 공부를 많이 해야겠다는 생각이 든다.
4. DeepML(CS231n)
◈ 8주차 (Lecture 8 : CNN architectures) :
이번주에 배운 CNN architecture들을 정리해보고자 한다.
CNN은 무엇인가?
- Convolutional Neural Network의 약자로 공간적인 부분들이
무시되는 DNN 방식을 보완하기 위해 만들어졌다.
- k*k의 윈도우를 가지는 컨볼루션 필터를 통해 공간적인 부분은 계승하면서 학습한다.
- 컨볼루션 필터를 사용하면 공간적인 부분은 학습이 되지만,
이미지의 크기가 줄어든다. 이를 보완하기위해 Padding(이미지 주변을 0으로 채움)을 사용한다.
- 컨볼루션필터는 이미지전체를 움직이면서 학습하지만,
움직이는 크기를 설정해주지 않으면 매우 느리다.
- 이때문에 Stride(어느정도의 크기로 이동할 것인가)를 설정해준다.
- Pooling은 컨볼루션필터를 사용한 이미지에서 특징들을 추출하여 학습 속도를 빠르게 만들어준다.
AlexNet은 무엇인가?
- AlexNet의 구조
- 5 Convolution layers(+5 Max pooling) + 3 fully-connected layers + ReLU nonlinearities
- 두개의 GPU로 병렬적으로 학습됨.
- 이전까지는 SVM 머신러닝이었으나 AlexNet이후 대부분이 Deep learning으로 갈아탐.
- ReLU를 활성화 함수로 사용하였다.
- 과적합을 막기위해 Drop out을 사용하였다.
- 이후 컨볼루션 필터의 윈도우 크기를 줄이고 3~5번째 필터의 갯수를 늘린 ZFNet이 등장한다.
VGGNet은 무엇인가?
- AlexNet과 같은 CNN 구조
- 기존 8개 Layer에서 19개 Layer로 늘었다.
- CNN을 어떻게 디자인할 것인가에 관한 디자인 가이드를 제시함.
1) 모든 컨볼루션 필터는 3 x 3 크기의 stride 1 pad 1로 정함.
=> 기존의 5 x 5 필터 하나로 계산하는 것보다 3 x 3 필터로 계산하는 것이 더 좋음.
=> 파라미터의 갯수도 적고, 계산 효율도 더 뛰어남.
2) max pool 시에는 2 x 2 크기의 stride 2 로 정함. 이후 채널의 수를 2배로 해줌.
GoogLeNet은 무엇인가?
- 계산효율성을 생각하여 혁신을 이끌어낸 모델
1) 고해상도의 연산을 줄임(224 x 224 -> 3 Conv -> 28 x 28)
2) Inception module을 사용함.
3) Inception module에 1 x 1 convolution 필터를 사용함.
4) fully connected layer의 갯수를 줄이기 위해 avg pool을 사용한다.
- 직전 19개 Layer에서 22개 Layer로 늘었다.
ResNet은 무엇인가?
- Batch Normalizationr과 함께 혁신적인 아이디어를 가진 모델
- 학습이 더 잘되도록 학습모델의 구조를 일부 변경함.
'[SSAC X AIFFEL]' 카테고리의 다른 글
[9주차]SSAC X AIFFEL (02.22~02.26) (0) | 2021.02.26 |
---|---|
[6주차]SSAC X AIFFEL (02.01~02.05) (0) | 2021.02.06 |
[5주차]SSAC X AIFFEL (01.25~01.29) (0) | 2021.01.29 |
[4주차]SSAC X AIFFEL (01.18~01.22) (0) | 2021.01.22 |
[3주차]SSAC X AIFFEL (01.11~01.15) (1) | 2021.01.15 |