목록전체 글 (40)
serendipity
DB , Database란 ? "다수의 사용자가 사용하는 데이터들의 공유와 운영을 위해 저장해 놓는 공간" 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체 사용하는 이유 프로그램을 개발할 때 프로그램 사용자들에 의해 생성된 데이터, 프로그래머가 필요에 의해 프로그램에 넣어놓은 데이터 등 많은 데이터들이 생성된다. 데이터베이스를 사용하지 않으면 이 데이터들은 프로그램을 종료하는 순간 전부 날아가게 되어서 이를 방지하기 위해 데이터들을 데이터베이스에 넣고 보관하는 방법을 사용한다. 관계형 DB (SQL) *SQL : StructuredQueryLanguage의 약자로 ..
HBase 란? 하둡 플랫폼을 위한 공개 비관계형 분산 데이터베이스 하둡의 분산 파일 시스템인 HDFS위에서 동작한다. 사용자는 Hbase나 HDFS에 직접 데이터를 저장하고 읽고 접근하는 것은 Hbase를 통한 임의접근을 이용할 수 있다. 분석 컬럼 기반 지향의 NoSQL DB으로, * NoSQL DB는 데이터 키값 형식으로 단순하게 구조화 대신 고성능의 쓰기/읽기가 가능하도록 만든 DB -> HBase 경우 특히 쓰기 성능에 최적화되어 있고 대용량 처리가 필요한 대규모 NoSQL 아키텍처 구성에 활용된다. " 대규모 데이터 셋에서 실시간으로 읽고 쓰는 랜덤 액세스가 필요할 때 사용" 특징) - 실제 인덱스가 없다 (row는 순차적으로 저장되고 각 로우별 칼럼도 순차적으로 저장) - 선형 확장성이 있다..
맵리듀스란 ? 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작해 2004년 발표한 sw 프레임워크 간단히 설명해보자면 한명이 3주 작업할 일을 3명이 나눠 1주에 다 끝내는 것! 하둡에서 사용하는 병렬처리 개념이며, 3명의 작업자를 클러스터라고 한다. 하둡에서는 계산시 큰 파일을 블럭단위로 나누고 모든 블럭은 같은 Map 작업을 수행하고 Reduce 작업을 수행한다. [ Input -> Splitting -> Mapping -> Shuffling -> Reducing -> Final Result ] 흩어져있는 데이터를 수직화 -> 데이터를 각각의 종류별로 모음(Map) -> 정렬, 필터링을 거쳐 데이터를 추출(Reduce) 분산형 파일시스템에서 수행되는 ① MapReduc..
* 자바 클래스 파일(*.java)에 public 클래스(class)가 존재하면 , 소스 파일의 이름은 반드시 해당 public 클래스의 이름과 같아야 합니다 !! 이러한 public 클래스는 자바 클래스 파일마다 단 한개만 가질 수 있습니다. 기본 구조 자바 프로그램은 한 개 이상의 클래스(class)로 구성되고, 이러한 클래스는 한 개 이상의 필드(field)나 메소드(method)로 구성됩니다. class 클래스이름 { 필드의 선언 ... 메소드의 선언 ... } main() 메소드 자바 프로그램이 실행되면 맨 먼저 main() 메소드를 찾아 그 안의 모든 명령문을 차례대로 실행합니다. * main() 메소드는 반드시 public static void로 선언되어야 합니다. public static ..
JAVA 자바(Java)는 C++과는 달리 처음부터 객체 지향 언어로 개발된 프로그래밍 언어 현재 자바는 전 세계에서 가장 많이 사용하는 프로그래밍 언어 중 하나다. 자바의 특징 장점) 1. 운영체제와는 독립적으로 실행할 수 있다 2. 불필요한 기능을 과감히 제거하여 다른 언어에 비해 배우기가 쉽다. 3. 자동 메모리 관리 등을 지원하여 다른 언어에 비해 안정성이 높다 4. 연산자 오버로딩을 금지하고 제네릭을 도입함으로써 코드의 가독성을 높였다. 단점) 1. 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느리다. 2. 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함이 있다. 3. 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다. 프로..
ZOOKEEPER 주키퍼 : 분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트 > 분산 시스템에서 시스템 간의 정보 공유, 서버들 간의 동기화를 위한 lock(락), 상태 체크 등을 처리해주는 서비스 ' 안정적이고 가용성 높은 znode 데이터 시스템을 제공하는 클러스터 서버' - 네임 서비스를 통해 분산해서 각각 클라이언트들이 동시 작업할 수 있도록 지원해줘서 부하를 분산시킨다. - 락(lock)을 통해 하나의 서버에서 처리된 결과가 다른 서버들과 동기화할 수 있게 해준다. Architecture : Leader Follower로 구성되는 Master-Slave 아키텍처를 기반으로 구성 여러(3대 이상의) 주키퍼 서버를 하나의 클러스터로 구성한 앙상블(ENSEMBLE) , 앙상블 데이터의 불일치를 방..
Kafka MOM (message oriented Middleware 메시지성 데이터 처리)에 최적화되어 있는 소프트웨어 중 하나로 대규모로 발생하는 메시지성 데이터를 비동기 방식으로 중계하는 역할을 하며 실시간 처리에 사용된다. Topic : broker에서 데이터의 발행/ 소비 처리를 위한 저장소 기능 수행. 이때, 이를 파일시스템에 비유하면 토픽은 폴더와 유사하며 토픽 안의 이벤트는 폴더안의 파일과 유사. 토픽에 저장된 이벤트는 필요한만큼 다시 읽을 수 있다. Broker : topic 컨트롤러로 kafka에서 server를 담당하며 한 클러스터 내에서 kafka server를 여러 대 띄울 수 있다. Provider : broker의 특정 topic에 데이터를 전송하는 역할 Consumer : 데..
Flume 대용량의 로그 데이터를 효율적으로 수집 및 이동할 수 있는 안정적인 분산 서비스 Source : 수집한 데이터를 channel로 전달 Channel : source & sink를 연결, data를 버퍼링, 메모리 & 파일 유를 channel의 저장소로 활용 Sink : channel로부터 받은 데이터를 최종 목적지에 저장 -> hdfs, hive 등에 제공 Interceptor : source와 channel 사이에서 데이터 필터링 및 가공 Agent : source -> interceptor -> channel -> sink -> component 순으로 구성된 작업 단위 활용) 클러스터에 있는 장치로부터 로그 파일들을 수집 후 HDFS와 같은 중앙 저장소에 저장하는 로깅 시스템을 구축할 때..
하둡 에코시스템이란? 하둡과 관련된 프레임워크들로, 하둡 코어 프로젝트 & 하둡 서브 프로젝트로 구성된다. 1) 분산 코디네이터 -Zookeeper 분산 환경에서 서버 간 상호 조정이 필요한 다양한 서비스를 제공하는 시스템이다. 분산 동기화를 제공하고 그룹 서비스를 제공하는 중앙 집중식 서비스로 적절한 분산처리 및 환경을 구성하는 서버 설정을 통합적으로 관리한다. 2) 분산 리소스관리 -YARN 작업 스케줄링 및 클러스터 리소스 관리를 위한 프레임워크다. (맵리듀스, 하이브, 임팔리, 스파크 등 다양한 애플리케이션들은 yarn에서 작업을 실행) -Mesos :클라우드 환경에 대한 리소스 관리 Linux 커널과 동일한 원칙을 사용하며, 컴퓨터에 API를 제공 (API는 ex. hadoop,kafka,spa..
동계 알고리즘 특강이란? 삼성 SDS에서 대학생 및 졸업생들을 대상으로 2주간 진행하는 알고리즘 특강으로, 2주간 교육을 80% 이상 출석하고 시험을 보면 수료증을 받을 수 있으며, 시험을 통해 삼성 sds pro 등급을 취득할 기회를 얻을 수 있다. 가장 중요한 것은, Pro 시험 합격자에 대해선 채용시에 혜택을 부여! 3학년이 지원하면 대상자가 될 수 없으니 필히 4학년 재학생 or 졸업자만 지원할 것! 2주동안 80시간, 고급 알고리즘 기법을 이해하고 문제를 풀며 훌륭한 강사진분들의 설명을 들을 수 있다. 이번 특강은 이전과 달리 언어에 따라 차수를 나눠서 뽑았습니다. 1차수 : c++ / 2차수 : java 입과 대상자를 선정하기 위해 5문제 사전 테스트를 진행하였습니다. 문제 난이도는 어려운것은..
저는 2021 한국전자통신 연구원 , 동계 연구연수생 공개 채용 전형에 지원했습니다. 자기소개서 서류 전형 100 % * 본인이 진행했던 프로젝트나 경험이 해당 부서에서 추구하는 방향과 맞다면 지원하는 것이 서류합격률을 높일 것입니다. 2021 동계 연구인턴 이력서 항목 대학교 , 어학 및 자격 등을 기본 이력 항목으로 물어봅니다. 여기서, 재학(휴학)중인 학년은? 이라고 또 물어보는데 주의할 점은 (학부 3, 4학년 재학생, 휴학생 및 졸업유예자만 지원 가능)! 1. 지원분야 관련 학교교육 과정을 이수한 경우, 5개 이내로 해당 내용 작성(과목명 / 주요 내용/ 이수학점(취득학점/만점)) 2. 최종학위 논문명 및 연구실적물 목록(해당자만 작성) 3. 희망하는 연구과제 또는 직무 4. 지원분야 관련 연구..
하둡이란? 하나의 성능 좋은 컴퓨터를 이용하여 데이터를 처리하는 대신 적당한 성능의 범용 컴퓨터 여러 대를 클러스터화하고, 큰 데이터를 클러스터에서 동시에 병렬로 처리해 처리 속도를 높이는게 목적인 분산처리를 위한 오픈소스 프레임워크 Hadoop Common : 하둡의 다른 모듈을 지원하기 위한 공통 컴포넌트 모듈 Hadoop HDFS : 분산저장을 처리하기 위한 모듈 / 여러개의 서버를 하나의 서버처럼 묶어서 데이터를 저장 Hadoop YARN : 병렬처리를 위한 클러스터 자원관리 및 스케줄링 담당 Hadoop Mapreduce : 분산되어 저장된 데이터를 병렬 처리할 수 있게 해주는 분산 처리 모듈 Hadoop Ozone : 하둡을 위한 오브젝트 저장소 HDFS Architecture HDFS는 마스..
Git 이란? : 형상관리 도구, 버전관리를 위한 프로그램 (Version Control System) "Git은 버전 관리, 협업을 가능할 수 있게 해준다!" 정도로 기억하기. https://git-scm.com/book/ko/v2 (공식 문서) 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 날라가버려도 다시 원상복구 가능GIT을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단 Git 영역 working directory : 현재 작업하고 있는 공간으로, Git이 관리하고 있지만 아직 추적( track )하고 있지 않..
🐼 Get the latest changes from origin (no merge) $ git fetch Fetch the latest changes from origin and merge $ git pull Fetch the latest changes from origin and rebase $ git pull --rebase Push local changes to the origin $ git push * compulsion $ git push -f
🐱 List all local branches $ git branch List all branches, local and remote $ git branch -av Switch to a branch, my_branch, and update working directory $ git checkout my_branch Create a new branch called new_branch $ git branch new_branch Delete the branch called my_branch $ git branch -d my_branch Merge branch_a into branch_b $ git checkout branch_b $ git merge branch_..
🐯 Create a new local repository $ git init [project name] Download from an existing repository $ git clone my_url 🦊 List new or modified files not yet committed $ git status Show the changes to files not yet staged $ git diff Show the changes to staged files $ git diff --cached Show all staged and unstaged file changes $ git diff HEAD Show the ..
https://www.juniorsoftwarecup.com/Blog/Detail/271 삼성 주니어 소프트웨어 창작대회 삼성 주니어 SW 창작대회는 미래의 소프트웨어 인재를 발굴하고 지원하는 대회입니다. www.juniorsoftwarecup.com:443 삼성 주니어 SW 창작대회란 ? 미래의 소프트웨어 전문가들을 발굴하고 지원하는 대회로, 2015년부터 약 30,600명*의 참가자와 함께한 삼성전자의 대표적인 청소년 대상 사회공헌 사업. 대학생 멘토란? 자격은 소프트웨어 관련 분야 전공 대학(원)생 및 휴학생으로, ! 학부 3학년 이상 지원 가능 및 소프트웨어 구현에 대한 피드백 및 멘토링 역량 필요한 멘토 활동내용 삼성전자 임직원 멘토와 함께 온라인 화상 플랫폼을 활용한 멘토링 진행 ※ 결선 진출..
임베딩 파인튜닝 🌱 파인 튜닝이란? 프리트레인 이후 추가 학습을 시행해 임베딩을 다운스트림 태스크에 맞게 업데이트하는 것 전이학습은 BERT의 언어 모델의 출력에 추가적인 모델을 쌓아 만든다. 일반적으로 복잡한 CNN, LSTM, Attention을 쌓지 않고 간단한 DNN만 쌓아도 성능이 잘 나오며 별 차이가 없다고 알려져 있다. 단어 임베딩 활용 1) 입력 문장을 토크나이즈한 뒤 해당 토큰에 대응하는 단어 벡터를 참조해 파인 튜닝 네트워크의 입력값으로 만든다. 2) 단어 임베딩을 1개 층의 양방향 LSTM 레이어에 태우고, 각 LSTM셀에서 나온 출력 벡터들에 어텐션 메커니즘을 적용해 고정된 길이의 히든 벡터로 만든다. 3) 히든 벡터를 활성함수가 ReLU인 피드포워드 네트워크에 입력한다. 4) 피드..
5. BERT 2018년에 구글이 공개한 사전 훈련된 마스크 언어 모델이다. BERT는 트랜스포머를 이용하여 구현되었고, 모델의 속성이 양방향을 지향한다. '주어진 시퀀스 다음 단어를 맞추는 것에서 벗어나, 일단 문장 전체를 모델에 알려주고 빈칸에 해당하는 단어 예측' BERT는 Transformer의 인코더-디코더 중 인코더만 사용하는 모델이다. 기존 인코더-디코더 모델들과 다르게 Transformer는 CNN, RNN을 이용하지 않고 Self-attention이라는 개념을 도입하였다. 🌱 Attention이란? : decoder에서 출력단어를 예측하는 매 timestamp마다 encoder에서 전체 입력문장을 다시 참고하는 것 입력값들을 동일한 비중으로 참고하는 것이아니라, decoder에서 현재 t..
4. 트랜스포머 네트워크 구글 연구 팀이 NIPS에 공개한 딥러닝 아키텍처로, 뛰어난 성능으로 주목받았다. 이후 발표된 GPT, BERT 등 기법은 트랜스포머 블록을 기본 모델로 쓰고 있다. - Scaled Dot-Product Attention 트랜스포머 블록의 주요 구성 요소 중 하나다. 입력(X)은 기본적으로 행렬 형태를 가지며 그 크기는 입력 문장의 단어 수 X 입력 임베딩의 차원 수다. 예로, 드디어 /금요일/ 이다 라는 문장이 입력으로 들어가면, 히든 차원 수가 768일 때, 입력 행렬의 크기는 3 X 768이다. 매커니즘은 쿼리(query), 키(key), 값(value) 세가지 사이의 다이내믹스가 핵심이다. 아래 그림의 과정처럼 계산을 수행하며, 소프트맥스 행렬과 값 행렬을 내적하는 것으로..
3. ELMo (Embeddings from Language Models) 문장 임베딩 기법 중 하나로 전이학습(transfer learning)을 NLP에 접목시킨 언어 모델이다. 단어 sequence가 얼마나 자연스러운지에 대한 확률값을 부여하고 입력한 단어들 뒤에 어떤 단어가 올 지 맞추는 방식으로 학습된다. ELMo가 제안된 후 자연어 처리 분야에서는 모델을 '프리트레인'(사전 학습)한 뒤 이를 각종 '다운스트림 태스크'(우리가 풀고 싶은 구체적 문제들) 에 적용하는 양상이 일반화되었는데 이는 곧 알아볼 BERT, GPT 등이다. 프리트레인한 모델을 다운스트림 테스크에 맞게 업데이트 하는 과정을 '파인튜닝'이라고 한다. 🌱 전이학습이란? : 이미 학습된 모델 결과를 다른 모델의 입력 또는 부분으로..
문장 수준 임베딩 1. Doc2Vec Word2Vec에 이어 구글 연구 팀이 개발한 문서 임베딩 기법이다. 문장 전체에 대해 단어 k개씩 슬라이딩해가며 단어 k개가 주어졌을 때 다음 단어를 맞추는 과정을 학습한다. 예를 들어, 'The cat sat on the mat'라는 문장에서 k=3일 때 아래 그림처럼 the, cat, sat으로 on을 예측한다. 이 과정을 한 단어씩 sliding하며 문장 내 모든 단어에 대해 예측하는 과정을 학습하는 것이다. 모델 학습 구조) Doc2Vec 모델은 아래 로그 확률 평균을 최대화하는 과정에서 학습된다. 이는 학습 데이터 문장 하나의 단어 개수가 T일 때 해당 문장의 로그 확률의 평균이다. 위 수식의 값이 커진다는 것은 모델에 이전 k개 단어들을 입력하면 모델이 ..
Weather Observation 시리즈 SQL 문제 풀이 2 Weather Observation Station 11 https://www.hackerrank.com/challenges/weather-observation-station-11/problem Weather Observation Station 11 | HackerRank Query a list of CITY names not starting or ending with vowels. www.hackerrank.com SELECT DISTINCT city FROM station WHERE city REGEXP '^[^aeiou]|[^aeiou]$' Weather Observation Station 12 https://www.hackerrank...
Weather Observation 시리즈 SQL 문제 풀이 Weather Observation Station 1 https://www.hackerrank.com/challenges/weather-observation-station-1/problem Weather Observation Station 1 | HackerRank Write a query to print the CITY and STATE for each attribute in the STATION table. www.hackerrank.com SELECT city, state FROM station Weather Observation Station 2 https://www.hackerrank.com/challenges/weather-obser..
5. GloVe (Global Word Vectors) 2014년 미국 스탠포드대에서 개발된 워드 임베딩 기법이다. GloVe는 다음 Word2Vec과 LSA의 단점을 극복하여, 단어 벡터 간 유사도를 잘 측정하면서 말뭉치 전체에 대한 통계량을 잘 반영할 수 있는 임베딩 기법을 목표로 만들어졌다. 기존의 임베딩 기법인 Word2Vec은 단어 간 유사도 측정은 잘 할 수 있었으나, 사용자가 지정한 윈도우 내 문맥만 학습하기 때문에 말뭉치 전체에 대해 학습하기에는 어려웠다. LSA는 말뭉치 전반적인 통계량은 잘 파악되었지만 단어간 유사도 측정은 잘 하지 못한다는 단점이 있었다. '임베딩된 단어 벡터 간 유사도 측정을 수월하게 하면서도 말뭉치 전체의 통계정보를 더 잘 반영해보자' 가 Glove가 지향하는 핵심..
3. FastText Word2Vec에서 단어 대신 문자 단위(character) n-gram을 한 모델로, 페이스북에서 2017년에 개발했다. 모델 기본 구조) Word2Vec과 대부분 내용이 동일하며, 사용하는 단위가 다르다는 차이점이 있다. ex, '티스토리'라는 단어를 n=3인 n-gram을 나타낼때, ,로 나타낸다. (는 단어의 경계를 나타내주기 위해 FastText 모델이 사용하는 특수기호이다.) 단어 임베딩은 5개의 문자 단위 n-gram 벡터의 합으로 표현한다. U티스토리 = Z + Z 일반 수식으로 나타내면, Ut = Σ zg (g ∈ Gt) *Gt는 타깃 단어 t에 속한 문자 단위 n-gram 집합을 가리킨다. FastText도 네거티브 샘플링 기법을 사용한다. 1. Positive s..
단어 수준 임베딩 모델 (Word Embedding) 1. NPLM (Neural Probabilistic Language Model) 모델 기본 구조) 기존 언어 모델의 한계 : - 학습 데이터에 존재하지 않은 n-gram이 포함된 문장이 나타날 확률 값을 0으로 부여하는데, 백오프나 스무딩으로 이런 문제를 일부 보완할 수 있지만 완전한 것은 아니다. - 문장의 장기 의존성을 포착해내기가 어렵다. 즉, n-gram 모델의 n을 5 이상으로 길게 설정할 수 없다. - 단어 문장 간 유사도를 계산할 수 없다. NLPM은 통계 기반의 전통적인 기존 언어 모델의 한계를 일부 극복한 언어 모델이라는 점에서 의의가 있다. 그뿐만 아니라 NPLM 자체가 단어 임베딩 역할을 수행할 수 있다. NPLM의 학습) NPL..
들어가기에 앞서 ... 임베딩 학습용 말뭉치는 라인 하나가 문서면 좋습니다. 한국어 위키백과, KorQuAD, 네이버 영화 리뷰 말뭉치 등을 이같이 전처리하였습니다. 형태소 분석 방법 국어학 전문가들이 태깅한 데이터로 학습된 모델을 분석하는 지도 학습 기법과 가지고 있는 말뭉치의 패턴을 학습한 모델을 적용하는 비지도 학습 기법 등이 있다. 지도 학습이란? : 정답이 있는 데이터의 패턴을 학습해 모델이 정답을 맞도록 하는 기법 1) 분류(Classification) 분류는 주어진 데이터를 정해진 카테고리(라벨)에 따라 분류하는 문제를 말한다. darknet의 YOLO, network architecture GoodLe Net for image classification을 이용하여 이미지를 분류한다. 분류는..
Matpotlib 이란? 다양한 데이터를 많은 방법으로 도식화 할 수 있도록 하는 시각화 파이썬 라이브러리 Matplotlib 사용 import matplotlib import matplotlib.pyplot as plt * matplotlib는 아래와 같이 크게 두 가지 방법으로 사용할 수 있습니다. - stateless API (objected-based) : 지정한 figure, ax에 그림을 그리는 방법 (직접 만들자!) - stateful API (state-based) : 현재의 figure, 현재의 ax에 그림을 그리는 방법 (직접 지정하지 않고 자동으로 찾아서 plotting!) figure : 그래프를 그릴 공간(종이) / ax(axes) : 공간 중 지금 내가 사용할 부분 여러가지 Pl..
Pandas란 ? : 데이터를 읽고 정리하는데 최적화된 도구인 파이썬 데이터분석 라이브러리입니다. 다음 종류의 데이터에 적합합니다. - SQL 테이블 또는 Excel 스프레드 시트에서와 같이 이질적으로 유형이 지정된 열이있는 데이블 형식 데이터 - 정렬되고 정렬되지 않은 시계열 데이터 - 행 및 열 레이블이 포함 된 임의의 행렬 데이터 - 다른 형태의 관찰 / 통계 데이터 세트 Pandas 사용 import pandas as pd from pandas import Series, DataFrame 데이터 구조 (자료구조) a. Series : 시리즈 = 데이터가 순차적으로 나열된 1차원 배열의 형태 , 열 벡터 (Index 와 Value로 구성) - 시리즈 생성 score = {'english':80, '..