전체 글 38

NLP 모델구현 프로젝트 #5 (Full Data를 활용한 Training)

이제 전체 위키피디아 데이터셋 (DB 전체)을 대상으로 학습하려면, 학습 전 전처리 작업이 필수다. 이 전 Synthetic Data 학습에는 question이 주어졌지만, 실제 Wikipedia box에는 그런 질문이 따로 존재하지 않기 때문이다. 먼저, 실제 DB에는 질문이 없으므로 질문을 직접 생성해야 한다. 이를테면 "Alexander Hamilton birth date" 이런 구조로 사람이름 + 관계명을 붙이는 것이다. 이게 가장 단순하고 기본 베이스라인이 된다. 좀 더 자연스러운 방법을 적용해보고싶다면 이런것도 가능하다. question templates을 만들어서 사용하는 것인데, 이를테면 "When was [name] born?" 이런 템플릿을 생성하여 relation이 birth date..

NLP 모델구현 프로젝트 #4 (Synthetic Data를 이용한 간단 Training)

앞서 구현한 KVMemNet 모델을 본격적으로 학습시키기 전에,모델이 정확히 동작하는지 간략 검증해보는 단계가 선행되면 좋다. 이를 위한 가장 확실한 방법중 하나는 synthetic data를 이용하여 모델에게 아주 간단한 데이터를 제공하여 완벽히 overfit 할수 있는지 확인하는 것이다. 만약 모델이 이 단순한 데이터 학습을 못한다면,실제 복잡한 데이터 학습에서는 당연히 실패할 가능성이 높다고 생각하고 디버깅을 수행하면 된다. 모델 입장에서 아주 쉬운 학습이 가능해야 하므로, 이 Synthetic Data는 잘 정의된 query - key - value의 구조를 가지고 있어야 한다. # Turn on a different relation on each rowrelations = torch.zeros(..

NLP 모델구현 프로젝트 #3 (Key-Value Memory Network 구현)

Key-Value Memory Network구조를 다시한번 상기해보자면, DB["Alexander Hamilton"] 이라는 데이터 셋이 하기의 값을 가진다고 했을 때,'born' : 'January 11, 1755''died' : 'July 12, 1804''spouse' : 'Elizabeth Schuyler''alma_mater' : 'King's College' When was Alexander Hamilton born? 이란 질문을 받으면, 질문 벡터와 Key-value pair 간의 attention을 통해, 가장 적절한 value 벡터 'January 11, 1755' 를 추출하는 모델을 구현해야 한다. 이를 구조적으로 보자면, 아래와 같은 4단계로 동작한다고 볼 수 잇다.이번 포스트에서는 ..

NLP 모델구현 프로젝트 #2 (데이터셋 전처리 및 DB생성)

기본적인 환경 set up과 유틸리티 함수를 구현했으므로,이제 데이터셋을 불러오고 데이터 프로세싱을 하는 과정을 수행해본다. 우리가 사용하는 데이터 셋은 Wikipedia Biography Pages에서 추출된 Table 형식의 정보를 보유한다. 각 인물들은 표로 구성된 다양한 정보(출생일, 직책, 부모이름 등)을 가진다. 표의 각 row는 relation: value의 형태로 구성되어 있고, 이 때 key에 해당되는 "relation"에 방금 이야기한 출생일, 직책, 부모이름 등의 속성이 들어간다. 이를테면 하기와 같이 json 구조로 DB 정리가 되어 있다고 보면된다. DB['alexander hamilton'] = { 'party': 'federalist', 'spouse': 'e..

NLP 모델구현 프로젝트 #1 (Intro & 환경셋업)

간략한 질의응답 시스템을 구현해 본다.Attention Mechanism을 사용하나, Transformer를 직접 사용하진 않고 대신 Key-Value Memory Network라는 다른 구조를 사용한다. 이 간단한 프로젝트의 구현 과정을 통해 Attention의 핵심 개념을 학습해보고자 한다. [프로젝트 요구사항] Dataset을 전처리하고, Memory network 모델을 구성, 학습루프를 직접 만들어서 테스트 까지 해본다.[프로젝트 실행환경] Google Colab (.ipynb) Introduction Memory Network : DB나 사전과 같은 외부 메모리에 접근해서 정보를 가져올 수 있도록 학습된 네트워크 구조 Memory Nework에서도 Key-Value Memory Netowkr ..

06. Knowledge Based AI #1

KBAI (지식기반 AI)는 인간이 지식을 어떻게 표현하고 사용하는지를 Modeling 하는 시도에서부터 시작된다.KBAI가 강조하는 3가지 요소 1. Learning(학습) 2. Memory(기억) 3. Reasoning(추론)는엄밀히 따져보면 Cognition System의 주요 구성요소 이기도 하다.이는 KBAI가 결국 Cognition System의 한 형태가 된다는 관점으로도 해석될 수 있다. 참고로, Cognition System은 인간의 인지 과정을 모방하는 AI 시스템을 뜻한다.즉 KBAI는 훌륭한 Cognition System을 구현하기 위한 하나의 방법론이라 볼 수도 있겠다. 훌륭한 KBAI 구현을 위해서는 아래 8가지의 주제에 대해 염두해 두는 것이 좋다. 1. Fundamentals..

24.01.02 - Rubber Duck Debugging

오늘 봄학기 수업관련 Slack을 보다가 "Rubber Duck Debugging"이라는 개념에 대해 처음 듣게 되었다. 모니터 옆에 귀여운 Rubber Duck을 하나 올려놓고, SW개발자가 막히는 부분이 생길 때 마다 Rubber Duck에게 본인의 코드를 하나하나 설명해 가면서 디버깅을 한다는 것이다. 아무것도 모르는 순진무구한 Rubber Duck에게 이슈사항에 대해서 설명하려면 전반적이고 꽤나 상세한 설명이 필요해지게 되며, 이 과정에서 개발자 본인도 다시한번 정리가 된다고 한다. 다소 깜찍한 방법인데, 도움이 될 것 같긴 하다. Rubber Duck Debugging을 입으로 소리내서 해야하는지 마음속으로 조용히 해야하는지에 대한 토론이 펼쳐졌는데, 그 모습을 보고 있자니 마치 Nerd Par..

09. 배터리의 CC충전 & CV충전

충전을 하기 위해선 기본적으로 Source단 전압이 Load단 전압보다 높아야 한다. 이는 기본이다. 따라서 충전기(EVSE)가 전기차 배터리를 충전하기 위해서는, EVSE의 전압이 기본적으로 전기차 배터리 전압보다 높아야 한다. 충전방식에는 2가지가 있는데, CC(Constant Current)충전과 CV(Constant Volatge)충전이다. 1. CC충전 CC충전은 배터리를 고정 된 전류로 충전해 주는 것이 목표이다. 즉, 10A로 CC충전한다고 하면 고전압배터리 전압에 상관없이 계속 10A가 충전된다는 뜻이다. 충전전류 = (EVSE전압 - 배터리전압)/(EVSE&배터리&충전케이블의 내부저항) 이기에, CC충전을 위해서는 고전압 배터리 전압이 상승되는 만큼 충전기 전압도 상승 되야한다. 2. C..

04. 컴파일 언어 vs 인터프리터 언어

우리가 다루는 모든 Programming Language는 사람이 이해할 수 있도록 표현된 고급언어이다. 이를 실행하기 위해서는 최종적으로 기계가 이해할 수 있는 저급언어로 변환하는 과정이 필요하다. 01. 컴파일 언어는, Compiler컴파일러를 이용하여 개발자의 소스코드 전체를 한번에 저급언어로 변환한다. 이 과정에서 소스코드내에 오류가 있다면 컴파일에 실패하여 결과를 아예 볼 수가 없다. 변환이후 실행을 위해서는 또한 추가적인 과정(Linking)이 필요하다. 02. 인터프리터 언어는, Interpreter인터프리터를 이용하여 소스코드를 한줄 씩 차례대로 저급언어로 변환한다. 따라서 소스코드내에 오류가 있다고 해도, 오류가 있는 코드라인 바로 직전까지는 정상적으로 변환한다. 특히, 추가적인 과정없이..

23.02.20 - 괴로움과 뇌신경

새로운 습관을 만들어 가는 과정은 뇌신경에 새로운 Pathway를 만들어 가는 과정이기도 하다. 흐릿했던 Pathway가 반복을 통해 점차 뚜렷해 질때 우리는 고통을 느낀다. 이를 뇌 과학자들은 근력운동을 할 때의 근육통에 비유한다. 최근 쉼 없는 공부의 연속에서 '괴로움'을 느꼈다. 괴롭다는 건 뇌신경이 만들어 지고 있다는 뜻이다. 그만큼 연속되는 공부에 대한 뇌신경이 약해져 있었다는 뜻이기도 할테다.

05. 박우디 - 소행성

지구에 짧게 머물었다가 소행성을 타고 떠나는 외계인과, 남겨진 지구인의 이야기 이다. 소행성은 계속해서 멀어지고, 난 그에게 어떤 존재였나 싶다. 제목: 소행성 작곡: 박우디, 양이두 작사: 박우디 노래: 장혜윤 다가갈 수 없는 그대여 메아리 치는 네 얼굴 우리함께 걷던 우리함께 웃던 그 날을 기억하곤 해 ​ 멀어지고 있는 그대여 까마득해진 네 온기 우리함께 걷던 우리함께 웃던 그 날을 기억하곤 해 ​ 아무것도 아니라 하면 아무것도 아니게 되는 우리들의 이야기를 아직 지켜내고 있어요 ​ 다가갈 수 없는 그대여 닿을수 없는 그대여 우리함께 걷던 우리함께 웃던 그 날을 기억하곤 해 ​ 우리함께 걷는 우리함께 웃는 그 날을 기도하곤 해

08. 전기차배터리의 병렬 & 직렬연결 특성

배터리의 병렬 및 직렬 연결의 특성에 대해 알아보고자 한다. 배터리의 특징을 나타내는 수치로는 대표적으로, 1) Capacity(Ah) 2) Energy(Wh) 3) Power(W) 가 있다. 3개의 18650 배터리를 병렬 및 직렬 해 보며, 위 특징들이 어떻게 변하는지 살펴보자. 1. 병렬연결 ​ 아래와 같이 평균 사용전압이 3.7V, 용량이 2.6Ah인 배터리 3개를 병렬연결하여 하나의 배터리 시스템으로 만들었다. 그럼 이 새로운 배터리시스템의 평균 사용전압은 3.7V 용량은 2.6 x 3 = 7.8Ah가 된다. ​ 용량이란건 전지가 가지고 있는 전하량을 의미하는데 쉽게 1시간(hr)동안 사용가능한 전류의 양으로 표현한다. 원래 하나의 배터리가 1시간에 2.6A씩 출력이 가능했으니, 아래 배터리시스..

03. Build batch files

Batch File배치파일 이란, 명령 프롬포트 혹은 Shell에서 실행되는 명령어들을 하나로 묶어놓은 스크립트 파일이다. 배치파일을 실행하면, 명령 프롬프트는 파일 내 각 Line들을 차례대로 실행한다. 따라서 커맨드창에 반복적으로 수행해야 하는 명령들이 있다면, 배치파일을 이용하여 자동화 한다던지 복잡한 여러 명령들을 손쉽게 처리하여 시간을 절약할 수 있다. 컴파일 언어 빌드시에도 유용하게 사용되며, 이 경우 보통 3개의 배치파일을 이용한다. (Window기반 플랫폼) 1. make.bat - 소스파일들을 컴파일 + 링크하여 실행파일이나 라이브러리 생성 - 주로 Makefile과 함께 사용됨 2. build.bat - 기본적으로 make.bat과 유사 - 컴파일 + 링크 뿐만 아니라 프로젝트의 Ful..

07. 전기자동차 절연저항 측정원리 - 2탄

지난 절연저항 측정원리 1탄에서 다루지 못했던 내용을 마무리 해보고자 한다. 잠시 복습하자면, ​ 절연저항 측정회로를 통해 실제로 절연을 깨가며 절연저항에 걸려있는 전압을 측정했고, 이 측정 전압값을 토대로 절연저항 값을 계산해 낸다 했었다. ​ 기억이 나지 않거나, 이해가 확실히 되지않았다면 지난번 Post를 한번 더 보는것을 추천한다. [박우디의 개발여행/전기차 이야기] - 06. 전기자동차 절연저항 측정원리 - 1탄 06. 전기자동차 절연저항 측정원리 - 1탄 아주 재미있고도 신비로운 주제를 다뤄보려 한다. ​ 지난시간에 전기자동차에서 말하는 "절연"에 대해서 알아보았다. 오늘은 절연의 정도를 수치적으로 나타내는 "절연저항" 값을 전기자동차 thewoodypark.tistory.com 오늘은 절연을..