앎을 경계하기

Contents 356

<DAFIT> 04 한국어 데이터 Tokenizer 02 - 형태소 분석기 라이브러리

데이터는 dafit에서 제공하는 html파일에서 다운로드 받을 수 있다. 링크를 들어가면 날짜별로 kowiki dump file을 다운로드 받을 수 있다. 문장 형태의 데이터가 있어야 형태소 분석을 했을 때 만족스러운 결과가 나타날 것이라고 생각했다. 그래서 아래 abstract가 있는 xml파일을 사용하기로 함. (파일을 빨리 열어서 구조를 봐야하기 때문에 사이즈가 좀 작은 파일을 선택한 것도 이유 중 하나) 뭐 이런식으로 생겼다. abstract 태그 데이터만 추출해서 형태소 분석을 하자. from konlpy.tag import Kkma import xml.etree.ElementTree as elemTree 사용할 라이브러리를 임포트한다. xml을 다뤄야하기 때문에 python 표준 라이브러리인 ..

백준 #1890 - 점프

action = {right, down} 대신 밟은 번호만큼 움직인다. 각 번호를 밟았을때 right, down 모두 해서 마지막 goal에 닿으면 된다. goal에 닿으면 1을 return 한다. 이 값들을 누적하면 최종적으로 start에서 goal로 갈 수 있는 경로의 수를 알 수 있다. N = int(input()) board = [list(map(int, input().split(' '))) for _ in range(N)] memo = [[0 for _ in range(N)]for _ in range(N)] def dp(board, memo, i, j): if i>=N or j>=N: return 0 if i

백준 #2579 - 계단 오르기

DP로 푸는 문제 DP는 메모이제이션이라고 생각하고 풀면 쉽게 풀 수 있다. 이전스텝에서 현재스텝일때 계단의 가치를 메모이제이션 해두면 연산을 여러번 안해도 되기 때문에 수행시간을 줄일 수 있다. def dp(memo, prev, now, steps): if now == 0: # 시작은 계단으로 안친다. return 0 if steps == 3: # 연속 세 개 밟을 수 없음 return 0 if memo[prev][now]: # 이미 계산한 것이라면 #return memo[prev][now] pass else: if now-2 >= 0: a = dp(memo, now, now-1, steps+1) b = dp(memo, now, now-2, 1) memo[prev][now] = stepVal[now-1..

<DAFIT> 04 한국어 데이터 Tokenizer 01 - 형태소 분석기 라이브러리

가장 먼저 해야할 일 "형태소 분석기 라이브러리"를 설치하자. 그냥 구글에 형태소 분석기 라이브러리 검색하니까 나온 라이브러리 https://konlpy-ko.readthedocs.io/ KoNLPy: 파이썬 한국어 NLP — KoNLPy 0.4.3 documentation KoNLPy: 파이썬 한국어 NLP KoNLPy(“코엔엘파이”라고 읽습니다)는 한국어 정보처리를 위한 파이썬 패키지입니다. 설치법은 이 곳을 참고해주세요. NLP를 처음 시작하시는 분들은 시작하기 에서 가볍게 기본 지식을 습득할 수 있으며, KoNLPy의 사용법 가이드는 사용하기, 각 모듈의 상세사항은 API 문서에서 보실 수 있습니다. >>> from konlpy.tag import Kkma >>> from konlpy.utils ..

백준 #10819 - 차이를 최대로

순열을 이용하면 쉽게 풀 수 있는 문제, itertools를 사용하자! 하나의 순열 뽑아서 쭉 식대로 더하는 작업을 순열마다 수행하고 그 중 가장 큰 값을 갖는 것을 출력해주면 된다. from itertools import permutations n = int(input()) arr = permutations(list(map(int, input().split(' ')))) ans = 0 for a in arr: sums = 0 for i in range(n-1): sums+=abs(a[i]-a[i+1]) ans = max(ans, sums) print(ans)

백준 #13913 - 숨바꼭질4

이전 숨바꼭질 문제와 다른 점은 어떻게 이동해야하는지 이동경로를 공백으로 구분해서 출력해야한다. path배열에 next step번째에다가 현재 step을 저장해두고 나중에 역추적해서 출력해주면 된다. from collections import deque N, K = map(int, input().split()) q = deque() q.append(N) time = [0 for _ in range(100001)] path = [0 for _ in range(100001)] ans = [] while q: v = q.popleft() if v == K: print(time[v]) ans.append(str(K)) while v!= N: ans.append(str(path[v])) v = path[v] an..

차근차근 Spinning Up 톺아보기 Key Paper : DQN

Model Free RL > Deep Q-learning > DQN DQN은 2013 NIPS에 처음 발표되고, 2015 NATURE에 개선된 알고리즘으로 발표된 논문이다. 사실 DQN 발표 이후로 강화학습이 주목받기 시작했다고 말할 수 있다. Spinning Up에 실린 논문을 기준으로 포스팅하겠다. 2013 NIPS 버전이다. 제목부터 살펴보면 심층 강화학습으로 Atari 게임을 플레이하는 것을 알 수 있다. DeepMind에서 제안한 논문이다. 강화학습을 사용한 고차원의 감각적 입력으로부터 직접 제어 정책들을 성공적으로 학습하기 위한 딥러닝 모델을 제안한다. 이 딥러닝 모델은 Q-learning의 변형으로 학습된 Convolutional neural network(CNN)이다. 입력이 이미지 raw..

차근차근 Spinning Up 톺아보기 5 - Part 3: Intro to Policy Optimization

Expected Grad-Log-Prob Lemma 이번 섹션에서, 우리는 policy gradient의 이론을 통해 널리 사용되는 중간 결과를 도출할 것이다. Expected Grad-Log-Prob을 줄여 EGLP라고 부를것이다. EGLP Lemma P_{\theta}가 확률변수 x에 대한 매개변수화된 확률 분포라고 가정하면, 다음식이 성립한다. 증명 Don't Let the Past Distract You PG를 위한 가장 최근의 표현을 보자. gradient 과정으로 인해 한 스텝 업데이트가 되면 모든 보상의 합인 Return에 비례하여 각 액션의 log-prob이 높아진다. 하지만 이것은 아직 별로 의미가 없다. 에이전트들은 결과에 따라 행동을 강화해야한다. 액션하기전에 얻은 보상은 하려는 액션..