분류 전체보기 63

1. 데이터에서 인사이트 발견하기

본 내용은 도서 '이것이 데이터분석이다 With Python'의 내용을 참고했습니다. https://github.com/yoonkt200/python-data-analysis 탐색적 데이터 분석의 과정 탐색적 데이터 분석은, 데이터의 정보를 파악하며 문제 해결에 필요한 힌트를 분석하는 과정이다. 그 과정은 다음과 같다. 데이터의 출처와 주제에 대해 이해한다. 데이터의 크기를 알아본다. 데이터의 구성 요소를 살펴본다. 데이터의 속성을 탐색한다. 데이터 간의 상관 관계를 탐색한다. 탐색한 데이터를 시각화 한다. 1.2 멕시코풍 프랜차이즈 chipotle의 주문 데이터 분석하기 chipotle 데이터셋의 기초 정보 출력하기 import pandas as pd # read_csv 함수로 데이터를 Datafram..

기본 데이터 분석

본 내용은 도서 '이것이 데이터분석이다 With Python'의 내용을 참고했습니다. 판다스 라이브러리 불러오기 import pandas as pd 데이터 프레임을 생성하고 일부분 살펴보기 # pandas의 df 생성 names = ['bob', 'jessica', 'mary', 'john', 'mel'] births = [968, 155, 77, 578, 971] custon = [1, 5, 25, 10, 23230] babydataset = list(zip(names, births)) df = pd.DataFrame(data = babydataset, columns = ['Names', 'Births']) df.head() 데이터프레임의 기본 정보 출력하기 - 열 타입 정보 df.dtypes 데이터프..

Day 52. Training Multi-Billion Parameter LM

이번에는 조금 색다른 분야입니다. 언어 모델이 계속해서 커지면서, 이를 단순히 학습시키는 것조차 큰 문제가 되었습니다. 매우 큰 모델의 대명사인 GPT-3는 트랜스포머 디코더의 단 하나 레이어의 역전파를 계산하는 데에도 메모리 크기가 부족합니다. 이러한 거대 모델들이 어떻게 학습되었는지 알아보고, 우리가 사용해왔던 GPU가 가지는 특징 및 Multi-GPU의 활용 방법에 대해 알아봅시다. 최근 language model들은 데이터 크기와 모델 크기 모두를 늘리는 것이 추세였다. 이전에는 파라미터의 수가 그렇게 크지 않았지만, 모델의 크기가 크면 커질수록 성능이 좋아지는 것 때문에 GPT-3가 최종적으로 나오게 되었다. 175 billion 하지만, GPT-3 같이 너무 큰 모델은 학습시키는 것이 문제이다..

Day 51. Machine Translation

자연어처리 분야에서 가장 큰 시장 규모와 연구 커뮤니티를 가진 기계번역에 대해서 알아봅시다. 기계번역은 언어학자들이 주도한 statistical machine translation(SMT)부터 최근의 neural machine translation(NMT)까지 눈부신 발전을 거듭했습니다. 병렬언어 말뭉치를 기반으로 하는 supervised NMT부터 단일언어 말뭉치를 기반으로 하는 unsupervised NMT를 알아봅니다. 그리고, 여전히 존재하고 있는 번역 task의 어려움에 대해서 알아봅시다. 기계번역이 성능을 어떻게 높였으며, 어떻게 진행되었는지를 알아보자. Machine translation은 인공지능이 다루는 task 중 손에 꼽을 정도로 어려운 편에 속한다. 하지만, 어려움에 비해서 활용도가..

Day 50. Text Generation

자연어처리 기술 적용 분야인 자연어 생성(text generation) 관련 내용입니다. 무엇이 text generation인가? text generation은 텍스트 생성하는 것이다. 지금까지 해온 것은 NLI(자연어 이해)이다. 문장을 받았을 때, pos, neg를 classification하는 것 등을 말한다. NLG는 문장 자체를 생성하는 것을 중점에 두고 있다. text generation은 다양한 분야에서 쓰일 수 있다. 챗봇, machine translation, 문장을 자유롭게 생성하는 것, 문장 요약 등에 쓰인다. open-ended generation에 대한 예시는 위와 같다. prompt로 단어 3개를 줄 때, 그 단어들에 대한 하나의 story가 생성되는 것이다. 또 다른 예시는, ..

트리

트리의 정의는 노드끼리 전부 연결되어 있으면서 사이클이 존재하지 않는 그래프이다. 트리는 두 지점의 연결 관계로 구성되어 있는데, 계층관계가 존재한다는 것이 특징이다. 우리는 하나의 연결 관계에서 위쪽에 있는 점을 부모라고 부르며, 아래쪽에 있는 점을 자식이라고 부른다. 그 외에도 추가적인 용어들은 다음과 같다. 노드: 각 지점을 의미합니다. 정점이라 부르기도 한다. 간선: 두 노드를 연결하는 선을 의미합니다. 에지라고 부르기도 한다. 루트 노드: 트리에서 맨 꼭대기를 의미한다. 부모, 자식: 트리에서 연결된 두 노드의 관계를 의미하는데, 더 위쪽에 있는 노드를 부모 노드, 아래쪽에 있는 노드를 자식 노드라고 부른다. 차수: 특정 노드를 기준으로, 자식의 수가 얼마나 되는지 의미한다. 깊이: 루트 노드와..

Python/Algorithm 2022.06.18

스택, 큐, 덱

스택 ( stack ) 스택은 데이터를 넣는 곳과 빠지는 곳의 위치가 같은 자료구조를 말한다. 즉, 맨 아래에 있는 데이터를 꺼내기 위해서는 그 위의 데이터를 모두 꺼내야 할 것이다. 이런 구조를 후입선출 구조(LIFO; Last In First Out)라고 부른다. stack은 크게 5가지 함수 사용이 가능하다. 1. push(x) # x를 stack의 맨 위에 올려 놓는다. 2. size() # stack 위에 쌓인 블럭의 개수를 반환한다. 3. empty() # stack 위가 비어있다면 true, 비어있지 않다면 false를 반환한다. 4. top() # stack의 맨 위에 있는 숫자 값을 반환한다. 단, stack에서 그 블럭을 제거하지는 않는다. 5. pop() # stack의 맨 위에 있는..

Python/Algorithm 2022.06.12

이진탐색

이진탐색 이진탐색은, 찾아야하는 수의 범위 중 가운데의 값과 찾고자 하는 값을 비교하여 대소관계에 따라 특정 구간으로 이동하는 것을 반복하는 것이다. 이진탐색을 사용하는 이유는 순차탐색보다 더 빠르기 때문이다. 실제 이진탐색의 시간복잡도는 O(logN)이다. 루프를 한 번 돌때 마다, 우리가 다루는 구간의 길이는 반으로 감소하고, 구간의 길이가 1이 될 때 까지 계속 반복해서 탐색하는 것을 볼 수 있다. 즉, 루프는 약 log2​N 번 돌게 된다. 루프 내부 연산의 시간 복잡도는 O(1)이기 때문에, 자연스럽게 시간복잡도는 O(1∗logN)=O(logN)이 되는 것을 볼 수 있다. O(N)과 O(logN)은 정말 큰 차이를 보인다. 만약, N이 4,294,967,296이라면, O(logN)의 시간복잡도를..

Python/Algorithm 2022.06.12

정렬의 종류 ( Python / 파이썬 )

버블 정렬(거품 정렬) 거품 정렬은 가장 단순한 정렬 알고리즘이다. 아이디어는 다음과 같다. 첫번째와 두번째 값을 비교하고, 두번째와 세번째 값을 비교하고, ... n-1번째와 n번째 값을 비교합니다. 이 과정에서 순서가 맞지 않은 값을 서로 교환해준다. 이런 절차를 정렬이 될 때 까지 반복한다. 코드를 작성하는 것은 어렵지 않지만, 상당히 비효율적인 알고리즘이기 때문에 성능이 다른 알고리즘에 비해 좋지 않다는 단점이 있다. 버블 정렬의 시간복잡도는 O(N2) 이다. 버블 정렬을 구현한 코드는 다음과 같다. n = int(input()) m = list(map(int, input().split())) for i in range(n): cnt = 0 for j in range(1, n): if m[j] >..

Python/Algorithm 2022.06.09