전체 글 153

임베딩 (1) / 임베딩 개념

파이토치로 배우는 자연어처리 책을 참고하여 작성했습니다. 참고 강의- 단어 임베딩 ▶ 임베딩(embedding)의 정의와 필요성 컴퓨터가 텍스트를 인식 처리할 수 있도록 단어나 문장을 벡터로 바꾼 것 혹은 그 과정을 임베딩이라고 한다. 임베딩 방식에는 전통적으로 사용해오던 원핫벡터, 카운트 기반의 TF-idf방식 등이 있다. 카운트 기반의 방식은 중요 내용이나 의미가 벡터의 여러차원에 표현되기 때문에 분산적 표현이라고도 부른다. 분산표현은 문서에 존재하는 단어들 보다 낮은 차원의 밀집벡터로 나타내지만 그럼에도 여러 차원에 비슷한 정보를 중복해 인코딩한 벡터를 만들기 때문에 통계적 장점을 공유하지 못한다. 또한 카운트 기반 표현은 차원이 수백만개로 늘어날 경우 상당히 고차원의 입력값 생성될 수 있는데, 이..

[백준 | 파이썬3] 2606. 바이러스- dfs

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net > dfs 활용 단방향 그래프가 아닌 양방향 그래프임에 주의해야한다. ▷ 처음에는 단방향 그래프로 다음과 같이 구현했다. 그러나 위 코드는 다음과 같은 예제는 풀지 못한다. 위와 같은 그래프가 있다고 할때 단방향 그래프는 1번 노드에서 출발했을 때 3번과 2번노드와 연결되어 있다고 인식하기 때문에 다음과 같이 1과 연결된 노드의 수로 2를 출력한다. ▷ 그러나 문제에 따르면 1번 노드는 2,3번 노드 ..

[백준 | 파이썬3] 11047. 동전0 - 그리디알고리즘

https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net > 그리디 알고리즘 가장 큰 단위의 동전가치부터 순회하면서 동전의 가치가 입력받은 k보다 작은 숫자이면 해당 동전으로 k의 가치를 차감할 수 있다는 뜻이다. 따라서 해당 가치로 k를 나눈 몫(몇 번 사용할 수 있는지 그 횟수를 나타냄)을 result에 더해주고 나머지 동전의 가치로 k값을 갱신시킨다. 여기서 중요한 점은 필요한 동전의..

엔트로피와 크로스엔트로피

참고강의1 - 엔트로피 참고강의2 - 크로스 엔트로피 ▶ 엔트로피란 entropy 는 무질서도를 의미한다. 따라서 엔트로피 값이 클수록 데이터가 혼재되어있어 분류가 잘 되어있지 않은 상태이고 그 값이 작을 수록 데이터가 잘 분리되어있다는 뜻이다. 즉 불확실성의 정도를 나타내는 수치라고 볼 수 있다. ▶엔트로피 공식 어떤 특정 현상이 발생할 확률을 p라고 할 때 엔트로피의 공식은 다음과 같다. 특정 사건이 발생할 확률 p에 로그를 취해준 p를 곱한 후 모두 더한 값에 -를 취해준다. ▷예제 해당 공식의 예제를 들어보자. 동전을 던졌을 때 앞이 나올지 뒤가 나올지 예측하는 문제가 있다고 해보자. 앞이 나올 사건과 뒤가 나올 사건에 대해 예측한 확률 분포값에 따라 각각의 엔트로피를 구해보자. 1) 앞이 나올 ..

[백준 | 파이썬3] 18258. 큐 2

https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net > 큐 활용 큐의 기본 개념을 확인하는 문제이다. 만약 시간 초과가 나온다면 다음 포스팅을 참고하자. https://westshine-data-analysis.tistory.com/63?category=843975 [백준 | 파이썬3] 1753. 최단경로- 다익스트라/ 런타임에러 input() vs stdin.readline https://www.acmicpc.net/pr..

CNN 추가 개념/ 풀링, 배치정규화, NiN 연결, 잔차연결

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의- BatchNormalization 참고 자료- 1x1 convolution / 잔차연결 CNN의 추가 개념에 대해서 간단하게 정리해보고자한다. CNN에 대한 개념과 기본설명은 다음 포스팅을 참고하자. https://westshine-data-analysis.tistory.com/73?category=873079 자연어 처리를 위한 피드포워드 신경망(2)/ 합성곱 신경망, 파이토치 구현 파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의 ▶ 합성곱 신경망이란 합성곱 신경망은 공간상의 부분 구조를 감지하는 데 적합하기 때문에 이미지 처리에서 많이 사 westshine-data-analysis.tistory.com ▶ 풀..

[Pytorch] CNN을 활용한 성씨 데이터 분류기 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 코드 출처 본 포스팅은 파이토치로 배우는 자연어 처리 책을 공부하며 따라 작성해본 코드 중에서 좀 더 자세한 설명이 필요하거나 코드에 대해 이해한 부분을 정리해보고자 작성하였다. ▶ 분석 개요 이번 포스팅에서 다뤄볼 데이터셋은 18개 국적의 성씨 10000개를 모은 성씨 데이터 셋으로 데이터 불균형 등의 문제등이 해결되어 이미 전처리가 완료된 데이터를 사용한다. 모델은 다층 퍼셉트론과 CNN을 사용하는데 본 포스팅에선 CNN을 사용한 예제를 풀어보고자 한다. 모델링의 대략적인 진행 과정은 다음과 같다. 토큰들을 정수로 매핑하기 위한 어휘사전을 구축하고 정수로 매핑된 토큰들을 원핫벡터 행렬로 수치화한다. CNN 모델을 구축한 후 학습 및 검증과정을..

[백준 | 파이썬3] 10828. 스택

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net > 스택활용 스택의 개념에 대해 이해하는 기초 문제이기 때문에 코드 자체를 생각하는 것은어려운 문제는 아니었으나 시간초과에 신경을 써야한다. sys.stdin.readline을 사용하여 시간초과가 나지 않도록 작성해주는 것이 중요하다. 본 코드에서는 sys.stdin.readline을 사용했을 때 붙여지는 줄바꿈 문자 \n을 제거하기 위해 rstrip을 사용했지만 해당 문제에선 ..

자연상수 e

유튜브 강의 내용을 참고하여 정리하였습니다. ▶ 자연상수 e란 베르누이에 의해 조명된 자연상수이다. 해당 개념은 복리를 계산하는 과정에서 복리를 최대화하기위해 계산하는 과정에서 비롯되었다. 분기 별로 1원의 가치를 가진 투자상품을 해지하고 재투자한다고 하면 이익은 (1+1/4)^4으로 2.4414가 나온다. 이번에는 매일매일 365일동안 하루만에 투자상품을 해지하고 재투자한다고 해보자. 그러면 이익은 (1+1/365)^365로 2.7이 나온다. 해지하고 재투자하는 기간이 짧을수록 이익율이 늘어난다. 그렇다면 무한번 해지하고 무한번 재투자하면 어떻게 될까. 그러면 2.1828...이라는 값에 수렴하는데 이 수치가 바로 자연상수 e이다. 베르누이가 조명한 이 자연상수를 오일러라는 수학자가 정리하여 출판함으로..

수학/미적분학 2021.07.25

위상정렬

나동빈님의 '이것이 코딩테스트다 with 파이썬'저서와 유튜브 강의를 참고하며 작성하였습니다. 코드 출처: https://github.com/ndb796/python-for-coding-test ▶ 위상정렬이란 사이클이 없어 순환하지 않는 방향 그래프의 모든 노드를 방향성에 어긋나지 않도록 순서대로 나열하는 정렬이다. 만일 선수과목을 고려한 수강 과목 순서를 결정하는 문제와 같이 선후관계를 지켜야하는 알고리즘 문제가 있다면 위상정렬을 수행해 문제를 해결할 수 있다. 위상정렬에선 여러가지 답이 존재할 수 있는데 이는 작동과정에서 설명할 큐에 들어가는 원소가 두개 이상일 때 발생한다, 만일 모든 원소를 방문하기 전에 검색되어야 하는 노드들이 순서대로 들어가 있는 큐가 빈다면 이는 그래프에 사이클이 존재함을 ..