Fundamental 30

FUNDAMENTAL 33. Regularization

1. Regulrization과 Normalization - Regularization? Normalization? 1) 위 두 개념은 서로 헷갈리는 경우가 많다. 한국어로 변역할 때 두 개념이 다 "정규화"로 번역될 때가 많아서 더욱 혼란스럽다. 2) Regularization (1) 오버피팅을 해결하기 위한 방법 중 하나이다. (2) L1 / L2 Regularization, Dropout, Batch normalization등이 있다. (3) 이 방법들은 모두 오버피팅을 해결하고자 하는 방법이다. 3) Normalization (1) 데이터의 형태를 좀더 의미있게, 혹은 트레이닝에 적합하게 전처리하는 과정이다. (2) 데이터를 z-score로 바꾸거나, minmax scaler를 사용하여 0과 1사..

공부/AIFFEL 2021.03.22

FUNDAMENTAL 32. Likelihood(MLE와 MAP)

1. 들어가며 : 머신러닝 목표 - 머신러닝 모델의 역할은 무엇인가? - 우리는 데이터의 집합이 있고, 데이터가 따르는 확률 분포를 알고 싶어한다. - 데이터의 분포를 안다면 새로운 입력 값이 들어와도 적절한 출력 값을 추정할 수 있다. - 하지만 데이터셋의 크기는 유한하기 때문에 데이터가 따르는 정확한 확률 분포를 구하는 것은 불가능하다. - 그래서 파라미터(parameter, 매개 변수)에 의해 결정되는 머신러닝 모델을 만든 다음, 파라미터의 값을 조절함으로써 데이터의 분포를 간접적으로 표현한다. - 모델이 표현하는 확률 분포를 데이터의 실제 분포에 가깝게 만드는 최적의 파라미터 값을 찾는 것이 머신러닝의 목표라 할 수 있다. 2. 확률 변수로서의 모델 파라미터 - 간단한 예시로 일차함수 모델을 생각..

공부/AIFFEL 2021.03.19

FUNDAMENTAL 31. Ainize, 나의 원클릭 포트폴리오 만들기

1. 들어가며 - 나만의 ML프로젝트, 설명하지 않고 보여줄 수 있다면? 1) 머신러닝과 관련된 연구, 개발, 공부를 하다보면 프로젝트, 논문, 코드 등 여러가지 매체를 통해 많은 정보를 얻을 수 있다. 2) 이 많은 정보들 중에서 내가 필요로 하는 정보는 얼마나 될까? 만약 우리의 프로젝트를 누군가에게 보여줘야 할 상황에는 어떻게 해야할까? 3) 코드들을 설명만 하는 것보다 백문이불여일견이라고 프로젝트가 구동되는것을 볼 수 있다면 좋을 것이다. - DevOps to MLOps 1) DevOPs란 Development Operations를 줄여 쓴 말로, 단순히 코드로 구현만 하는것이 아니라, 실제 제품으로서 프로그램이 살아 숨쉴 수 있도록 모든 과정을 책임지고 수행하는 일을 말한다. 2) 더 나아가 M..

공부/AIFFEL 2021.03.17

FUNDAMENTAL 30. 딥네트워크, 서로 뭐가 다른 거죠?

1. 딥네트워크, 서로 뭐가 다른 거죠? - 요즘 핫한 딥러닝, 이름에서 알 수 있듯 깊게 구성된 신경망이다. - 이런 신경망을 깊게 쌓는데 많은 연구와 기법이 필요한데, 연구자들이 더 좋은 성능을 내는 딥네트워크를 만들기 위해 다양한 방법과 네트워크를 탄생시켰다. - 이 중 몇가지를 오늘 배웠다. 2. ImageNet Challenge - 이미지넷(ImageNet)은 비전(vision) 관련 딥러닝을 하다보면 보게될 이름이다. - 이미지넷은 2010년부터 이미지관련 데이터셋을 제공하고 이로인해 여러 모델을 만드는데 도움이 되었다. 3. 딥네트워크의 시작 - SuperVision이라는 팀이 전년도 대비 10%의 오류율을 낮추면서 1등을 했는데, 비법은 네트워크를 깊게 쌓았기 때문이다. - 이 때 사용한 ..

공부/AIFFEL 2021.03.15

FUNDAMENTAL 29. 활성화 함수의 이해

1. 활성화 함수 - 오늘은 Softmax나 ReLU 등 익숙히 들어본 활성화 함수(activation function)을 배웠다. - 활성화(activated) or 비활성화(deactivated)라는 것은 어떤 조건을 만족 or 불만족 했다는 것과 긴밀한 연관이 있다. - 지금까지 써왔던 신경망 속의 퍼셉트론(perceptron) 혹은 노드(node)도 특정 조건이 만족하면 활성화 되도록 디자인되어 있다. - 느드에 입력으로 들어오는 값이 어떤 임계치를 넘어가면 활성화(activated)되고, 넘어가지 않으면 비활성화(deactivated)되게 코딩되어 있다. - 예를 들어 ReLU는 입력값이 음수, 즉 0 미만이라는 조건을 만족한다면 0을 출력하고, 입력값이 0 이상이면 입력값 그대로를 출력하도록 ..

공부/AIFFEL 2021.03.15

FUNDAMENTAL 28. 파이썬으로 데이터 전처리 웹 만들기

1. 전처리 웹 사이트를 제작해보자 - 오늘은 화면이 있는 프로그램을 만들어서 나만의 프로그램을 직접 만드는 것을 할 것이다. - 웹 사이트는 크게 두 가지로 구성된다. 프론트 엔드(front-end)와 백 엔드(back-end)이다. 1) 프론트 엔드는 우리가 보고 있는 웹 사이트의 화면을 말하고, 2) 백 엔드는 화면에서는 보이지 않지만, 웹 사이트를 화면에 보여주기 위해 데이터베이스를 활용해 실질적인 정보의 가공 / 처리를 수행하는 구성 요소라고 이해하면 되겠다. - 웹 사이트에서의 프론트 엔드는 단순히 화면을 보여주는 것이기 때문에 백 엔드 없이 이용할 수 있을 때도 있다. 하지만 백 엔드가 없으면 DB 같은 것들을 붙여 이용하기 어렵다. - 백 엔드도 프론트 엔드 없이 백 엔드만 사용하게 되면 ..

공부/AIFFEL 2021.03.10

FUNDAMENTAL 27. 딥러닝 레이어의 이해(2) Embedding, Recurrent

1. 분포가설과 분산표현 - 희소 표현(Sparse Representation) : 벡터의 특정 차원에 단어 혹은 의미를 직접 매핑하는 방식 - 분포 가설(distribution hypothesis) : 모든 단어를 고정차원의 벡터로 표현한다. 어떤 차원이 특정한 의미를 가진다고 가정하지 않는다. 단지 유사한 맥락에서 나타나는 단어는 그 의미도 비슷하다라는 가정을 한다. - 분산 표현(distributed Representation) : 유사한 맥락에 나타난 단어들끼리는 두 단어 벡터 사이의 거리를 가깝게 하고, 그렇지 않은 단어들끼리는 멀어지도록 조금씩 조정하여 얻어지는 단어 벡터 - 다음에 배울 Embedding 레이어는 단어의 분산 표현을 구현하기 위한 레이어이다. 간단하게 컴퓨터용 단어 사전인 것..

공부/AIFFEL 2021.03.08

FUNDAMENTAL 26. 빅데이터 생태계

1. 빅데이터 연대기 - 2002년 : 더그 커팅(Doug Cutting)과 마이크 카파렐라(Mike Cafarellr)가 웹 크롤러 너치(Nutch) 개발 - 2003년 : 구글에서 분산 처리용 파일 시스템인 GFS(Google File System) 논문 발표 - 2004년 : 구글에서 분산 처리용 프로그래밍 모델인 맵리듀스(MapReduce) 논문 발표 - 2005년 : 더그 커팅, 마이크 카파렐라의 주도 하에 NDFS(Nutch Distributed File System) 프로젝트 시작 - 2006년 : 더그 커팅 야후에 합류, 야후에서 최소의 하둡 기반 클러스터 구축, 구글에서 빅테이블(BigTable) 논문 공개 이는 향후 아파치 하둡의 HBase의 근간이 됨 - 2007년 : 아파치 하둡 1..

공부/AIFFEL 2021.03.08

FUNDAMENTAL 25. 더 많이! 더 깔끔하게! 데이터를 관리하는 데이터베이스

1. 파일 시스템 활용 - 오늘 노드의 컨셉은 내가 데이터 관리 어플리케이션을 제작하는 파이썬 개발자가 된 것이다. - 파이썬을 이용해서 텍스트 파일에 담긴 데이터를 읽어와서 필요한 정보를 출력하는 어플을 만든다는 가정으로 진행되었다. - 1단계 : 문제 설명 1) 어떤 파일에 사원들의 정보가 담긴 데이터가 있는데 이 파일을 읽어와서 월급을 계산하고, 월급이 가장 높은 사원을 찾는 프로그램을 만들 것이다. - 2단계 : 필요한 함수 만들기 1) 코딩을 하기 전에 전체 프로그램을 어떻게 구성할지 대략적으로 생각해 본다. 2) 어떤 프로그램을 만들지, 그 안에는 어떤 함수가 필요한지, 함수들은 어떤 기능을 할지 등 3) 여기서는 summarize()라는 함수를 만드는 것을 예시로 듬 - 3단계 : Class..

공부/AIFFEL 2021.03.03

FUNDAMENTAL 24. 맵리듀스로 그리는 빅데이터 지도

1. "빅"데이터 처리의 기본패턴 - 빅데이터를 처리한다. 말 그대로 데이터 용량이 크고 처리 시간도 많이 소요될 것이 머리속에 그려진다. - 그럼 좋은 성능의 컴퓨터를 써야하겠고, 혹은 여러 컴퓨터를 연결하여 작업을 분할해 볼 수 있다. - 이런 컴퓨터 자원을 엮어서 병렬 컴퓨터(Parallel Computing), 분산 컴퓨터(Distributed Computing)을 통해 단일 컴퓨터로는 처리하기 힘든, 혹은 아예 메모리에 담아둘 수조차 없을 많큼 큰 데이터를 다뤄볼 수 있다. - 비슷한 개념으로 클러스터 컴퓨팅(Cluster Computing)이라는 것도 있다. - 빅데이터를 다루는 솔루션이라는 하둡, 스파크 등의 생소한 이름의 빅데이터 처리 매커니즘이란 것이 있다. - 오늘 배울 개념은 맵리듀스..

공부/AIFFEL 2021.03.01