본문 바로가기
728x90

전체 글431

Introduction to Computer Network Internet 위는 인터넷으로 연결되어있는 network의 예시이다. 여기서 ISP는 Internet Service Provider의 줄임말로 말 그대로 인터넷 서비스 제공자를 의미한다. 결국 network는 수백 수천만개의 computing device를 연결하기 위한 수단이다. 이때 end system들을 host라고도 부른다. 유,무선 link를 이용하여 연결이 된다. 유선 link로는 fiber, copper등이 있고 무선 link로는 radio, satellite등이 있을 수 있다. 추가적으로 transmission rate는 전송률로 실제로 얼마나 많은 데이터가 단위 시간에 전송되는지를 나타낸다. 이때 bandwidth는 데이터의 최대 속도를 의미한다. 수신 power가 증가하면 error를.. 2023. 9. 3.
Baekjoon Training #14888 #14888 연산자 끼워넣기 import sys from itertools import permutations input = sys.stdin.readline N = int(input()) #숫자 개수 num = list(map(int, input().split())) #숫자 리스트 oper_num = list(map(int, input().split())) #각 연산자 수가 담긴 리스트 oper_list = ['+', '-', '*', '/'] #연산자 리스트 oper = [] for i in range(len(oper_num)): for _ in range(oper_num[i]): oper.append(oper_list[i]) max = -1000000000 #max값이 업데이트 되는것에 방해가 되지.. 2023. 8. 27.
Pandas(3) 함수 DataFrame에 함수를 적용하는 메서드에 대해서 알아보자. apply apply 메서드는 DataFrame에 함수를 적용하여 반환하는 메서드이다. 함수에 전달되는 객체는 Seires형식이며 DataFrame의 index(axis=0)이냐 columns(axis=1)이냐에 따라 다르다. 최종반환 유형은 적용된 함수에 따라 정해지지만 result_type을 지정하여 변경이 가능하다. 기본 사용법 df.apply(func, axis=0, raw=False, result_type=None, args=(), kwargs) function : 각 행이나 열에 적용할 함수이다. axis : {0 : Index / 1 : columns} 함수를 적용할 축이다. row : {True : ndarray / Fal.. 2023. 8. 23.
Pandas(2) 나머지 객체간 연산 곱셈(mul, rmul), 나눗셈(div, rdiv), 나머지(mod, rmod), 거듭제곱(pow, rpow) 4개의 연산들도 마찬가지로 기본적인 파이썬 연산자와 거의 같지만 차별화되는 것은 fill_value 인수를 통해 계산 불가한 값을 채워 넣는다는 것이다. 행렬곱(dot) 행렬곱은 다음과 같이 사용된다. DataFrame.dot(other) 선형대수학에서 배운 행렬곱과 같은 내용이다. col1 col2 col1 col2 col1 col2 row1 A B x row1 a b = row1 Aa+bc Ab+Bd row2 C D row2 c d row2 Ca+Dc Cb+Dd 간단한 2x2 짜리 DataFrame을 두개 만들어서 계산을 진행해보자. col = ['col1','col2'.. 2023. 8. 21.
BERT(3) BERT를 Fine-tuning 이번에는 사전 학습 된 BERT에 우리가 풀고자 하는 태스크의 데이터를 추가로 학습 시켜서 테스트하는 단계인 파인 튜닝 단계에 대해서 알아보자. 실질적으로 태스크에 BERT를 사용하는 단계에 해당된다고 볼 수 있다. 하나의 텍스트에 대한 텍스트 분류 유형(Single Text Classification) BERT를 사용하는 첫번째 유형은 하나의 문서에 대한 텍스트 분류 유형이다. 이 유형은 영화 리뷰 감성 분류, 로이터 뉴스 분류 등과 같이 입력된 문서에 대해서 분류를 하는 유형으로 문서의 시작에 [CLS] 라는 토큰을 입력하다. 앞서 사전 훈련 단계에서 다음 문장 예측을 설명할 때, [CLS] 토큰은 BERT가 분류 문제를 풀기위한 특별 토큰이다. 텍스트 분류 문제를 풀.. 2023. 8. 20.
Pandas(1) Intro 무턱대고 딥러닝에 뛰어들다 보니 같은 연구실의 사람들에 비해 데이터를 처리하는 능력이 부족하다고 느껴서 numpy와 pandas에 대한 이해도의 필요성을 크게 느껴 공부를 진행해보려한다. numpy는 직접 다루기가 어려워서 대부분 pandas를 이용한다고 하여 우선 pandas에 대한 이해도를 끌어올리기 위하여 pandas 공부를 시작한다. Pandas.DataFrame 클래스 구조 pandas dataframe 객체는 기본적으로 아래와 같은 클래스로 생성이 된다. class pandas.DataFrame(data=None, index=None, columns=None, copy=None) pandas.DataFrame으로 생성된 인스턴스는 크기의 변경이 가능한 2차원 배열이다. 데이터 구조에.. 2023. 8. 20.
Baekjoon Training #1904 #1904 01타일 import sys input = sys.stdin.readline n = int(input()) dp = [0] * 1000001 dp[1] = 1 dp[2] = 2 for k in range(3,n+1): dp[k] = (dp[k-1]+ dp[k-2])%15746 print(dp[n]) DP 문제인 만큼 발상이 중요했다. DP[1] = 1 ( 1 ) DP[2] = 2 ( 11 , 00 ) DP[3] = 3 ( 111, 100, 001) DP[4] = 5 ( 1111, 1100, 1001, 1100, 0000 ) 위의 특징을 보고 피보나치와 유사하다는 생각을 떠올렸다. 그후에 검증과정을 거쳐 DP[n] = DP[n-1] + DP[n-2]임을 알게 되었다. 그 이유는 n번째 DP는 n.. 2023. 8. 18.
BERT(2) Intro BERT(Bidirectional Encoder Representations from Transformers)는 2018년에 구글이 공개한 사전 훈련된 모델이다. BERT는 2018년에 공개되어 등장과 동시에 수많은 NLP task에서 최고 성능을 보여주면서 NLP분야의 한 획을 그은 모델로 평가받고 있다. BERT의 구조에 대해 이해하고, 간단하게 실습해보려한다. BERT의 T가 transformer인 만큼 트랜스포머를 이용하여 구현되었다. 위키피디아의 25억개 단어, BooksCorpus의 8억개 단어와 레이블이 없는 텍스트 데이터로 pre-train이 되어있는 언어모델이다. BERT가 높은 성능을 얻을 수 있었던 것은, 레이블이 없는 방대한 데이터로 사전 훈련된 모델을 가지고 Fine-t.. 2023. 8. 13.
Baekjoon Training #12865 #12865 평범한 배낭 이 문제는 Knapsack Problem(냅색 문제)이다. 배낭에 담을 수 있는 무게의 최댓값이 정해져 있고, 일정 가치와 무게가 있는 짐들을 배낭 가치의 합이 최대가 되도록 짐을 고르는 방법을 찾는 문제를 말한다. 이때, 짐을 쪼개서 넣을 수 있는 경우와 쪼개지 못하고 넣는 경우 두가지가 존재한다. 쪼갤 수 있는 경우 분할가능 배낭문제(Fractional Knapsack Problem), 쪼갤 수 없는 경우 0-1 배낭문제(0-1 Knapsack Problem)이라 부른다. 위 문제는 쪼갤 수 없는 0-1 Knapsack의 경우이고 이는 동적계획법(Dynamic Programming)으로 풀 수 있다. 알고리즘 1) x축엔 가방 1~K 까지의 무게, y축은 물건 N개 개수 만큼.. 2023. 8. 6.
BERT(1) Bert: Pre-training of deep bidirectional transformers for language understanding Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova Google AI Language Background Pre-trained Language Model 2015년 구글은 'Semi-supervised Sequence Learning'라는 논문에서 LSTM 언어 모델을 학습하고나서 이렇게 학습한 LSTM을 텍스트 분류에 추가 학습하는 방법을 보였다. 이 방법은 우선 LSTM 언어 모델을 학습합니다. 언어 모델은 주어진 텍스트로부터 이전 단어들로부터 다음 단어를 예측하도록 학습하므로 기본적으로 별도의 레이블.. 2023. 8. 2.
GAN Generative Adversarial Networks(GAN) GAN은 Generative Adversarial Networks의 약자로 우리말로는 “적대적 생성 신경망”이라고 번역되는 딥러닝기술 중 하나이다. GAN은 실제에 가까운 이미지나 사람이 쓴 것과 같은 글 등 여러 가짜 데이터들을 생성하는 생성형모델이다. “적대적 생성 신경망”이라는 이름에서 알 수 있듯 GAN은 서로 다른 두 개의 네트워크를 적대적으로(adversarial) 학습시키며 실제 데이터와 비슷한 데이터를 생성(generative)해내는 모델이며 이렇게 생성된 데이터에 정해진 label값이 없기 때문에 비지도 학습 기반 생성모델로 분류된다. GAN은 구글 브레인에서 머신러닝을 연구했던 Ian Goodfellow에 의해 2014년.. 2023. 7. 26.
[논문 리뷰] Attention is all you need (2) Attention is all you need NIPS 2017 Google Decoder 이전 글에서 다뤘던 Encoder의 결과 텐서가 Decoder에서 이된다고 보면 된다. Decoder는 Encoder와 구조적으로 굉장히 유사하다. 코드로 차이를 살펴보면 아래와 같이 빨간 표시가된 부분에만 차이가 있다. self attention layer가 decoder에서는 두번 반복되고 두번째 layer는 input에서 차이가 있음을 볼 수 있다. 또한 마스크로 encoder에서는 source mask를 이용한 반면 decoder에서는 target mask를 이용한다. Masking 인코더에서는 아래와 같이 padding에 대해서 masking을 진행하기 때문 padding masking이라고도 불리지만 디.. 2023. 7. 25.
728x90