프로그래머스 인공지능 데브코스 첫 날 꼭 참여하고 싶었고 어렵게 함께하게 된 만큼 열심히 할 생각이었는데, 첫 날부터 학습량이 만만치가 않다. 하지만 내가 개발자가 되기위해 공부한 기간이 얼마안되고 같이 참여하는 동기들보다 많이 부족하다고 스스로 느끼기 때문에 남들보다
루트노드를 기준으로 왼쪽 노드이 값이 오른쪽 노드의 값보다 작은 트리특정 값을 찾기가 쉬울 수 있다. 따라서 O(logn)의 복잡도를 대부분 가진다예시(그림)데이터 표현 : 각 노드는 (key, value)의 쌍으로 되어있다키를 이용해 검색 가능하고 보다 복잡한 레코드
3일차는 1. 코딩테스트 예제의 설명을 듣고 2. 풀이예제를 확인하고 3. 실습을하는 순서로 진행된다.하지만 나는 2.풀이예제를 확인하기전에 3.실습부터 진행하는 것으로 순서를 바꾸어 진행하겠다.해시(Hash) 대표 문제 풀이 : 완주하지 못한 선수 dict.get()
이번 파트의 목표는 어떤 연립일차방정식, 즉 linear system(선형시스템)이라도 정형적인 Ax = b와 같은 방법으로 표현해 해결하는 방법을 배우는 것이다.어떤 방정식이 직선과 같은형태로 올 곧게 표현된다면 선형방적이라고 할 수 있다.3x + y + z = 4x
내가 푼 코드
문제 설명선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.위 순서에 없
Ax = b의 형태를 LUx = b와같이 변경할 때 A를 L과U의 곱인 LU로 분해하는 것을 말한다.LU분해의 목적은 x를 구할 때 A의 역행렬로써 구하는 것보다 수치적 안정성 높일 수 있기 때문이다. 또한 b가 자주 업데이트되는 경우 A를 PLU로 분해해 분다면 b가
문제 설명1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.앞사람이 말한
문제설명어떤 수를 서로 다른 소수 3개의 합으로 표현하는 경우의 수를 구하려 합니다. 예를 들어 33은 총 4가지 방법으로 표현할 수 있습니다.3+7+233+11+193+13+175+11+17자연수 n이 매개변수로 주어질 때, n을 서로 다른 소수 3개의 합으로 표현하
벡터의 직교분해를 이해하기위해서는 투영(projection)의 개념을 알아야한다.아래 그림과 같이 벡터 u를 벡터 a에 투영한 결과를 w1이라고하고 u에서 그 w1벡터를 빼면 w2가 남는다. 이 때 w2를 보완 벡터라고 한다.아래와 같이 행렬의 각 열벡터가 서로 직교하
아래와 같이 사건 A나(or조건) B가 일어날 확률을 구하려면 각각의 확률을 더하고 교집합이 되는 확률을 빼주어야한다. 이때 교집합이 없다면 A와 B를 서로 배반(mutually exclusive)한다고한다.어떤 사건 A가 일어났을 때 다른 사건 B가 일어날 확률어떤
통계적 추론을위해 표본조사를 통해 모집단에대한 해석을 진행한다.전수조사는 실질적으로 현실에서는 불가능하기 때문에표본조사는 반드시 오차가 발생하기 때문에 적절한 표본 추출방법이 필요한다.표본과 모집단과의 관계를 잘 이해해야한다.표본조사의 목적은 모수(parameter),
문제 설명짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가
문제 설명이번 문제에서는 다음 두 가지 일을 해야 합니다.최대 용량이 정해진 FIFO 큐 클래스 구현1표준 입력으로 들어온 명령어로 큐 조작1\. 최대 용량이 정해진 FIFO 큐 클래스 구현스택 두 개를 통해 최대 용량이 max_size가 정해진 FIFO 큐 클래스,
문제 설명어떤 문자열 s가 주어졌을 때, s로부터 만들 수 있는 부분 문자열 중 사전 순으로 가장 뒤에 나오는 문자열을 찾으려 합니다. 부분 문자열을 만드는 방법은 다음과 같습니다.s에서 일부 문자를 선택해 새로운 문자열을 만듭니다.단, 이때 문자의 순서는 뒤바꾸지 않
문제 설명XX 모바일 보드게임은 같은 크기의 칸으로 구분된 직선 모양의 게임 보드와 특별한 주사위 3개를 사용해서 진행합니다. 주사위는 각각 1부터 S1, S2, S3까지의 숫자 중 하나가 나오며, 3개의 주사위를 동시에 굴려 나온 숫자의 합만큼 캐릭터를 이동시킵니다.
문제 설명아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.12 = 5 + 5 + (5 / 5) + (5 / 5)12 = 55 / 5 + 5 / 512 = (55 + 5) / 55를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다
git은 소스코드의 분산와 병합 그리고 버전관리를 편하게 하기위한 도구이며 Github는 소스를 저장하고 관리해주는 원격저장소를 관리 사이트이다.특히 프로젝트와 같이 협업이 필요한 일을 할 때 아주 유용하게 쓰이며 나 역시 앞으로 자주 사용할 것이기에 간단하게 정리해보
행과 열을 이용해 데이터를 관리하는데 굉장히 유용한 모듈인 Pandas에대해 학습했다. 그 중에 전부는 아니고 내가 그동안 헷갈렸거나 몰랐던 부분들만 정리해보겠다.리스트를 이용한 Series 생성딕셔너리를 이용한 Series 생성numpy 이용4\. Series에 이름
Python에서 dataframe 시각화를 위해 보통 matplotlib과 seaborn 패키지를 사용한다.간단히 설명하면 matplotlib은 그래프를 그리기 위함이고 seaborn은 그래프를 조금 더 다양한 형태로 이쁘게 표현하기 위한 목적으로 쓰인다.모듈 또는 패
오늘은 데이터분석 competition사이트로 유명한 kaggle에서 가장 대표분석 주제인 titanic 데이터를 분석보았다. 목적은 생존자(survived)변수와 그 외 나머지 feature들의 관계를 파악해 생존자를 예측하는 것이다.데이터 불러오기.dscribe()
문제 설명데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로
파이썬에서 웹 어플리케이션을 구축하고 서버를 구동하기위한 프레임워크인터넷 : 전 세계 컴퓨터를 하나로 합치는 거대한 통신망Web : 인터넷에 연결된 사용자들이 정보를 공유할 수 있는 공간(메일은 웹에 해당하지 않는 대표적 예)웹은 클라이언트(사용자)와 서버의 소통(요청
과거에는 인터넷 환경에서 서비스를 제공하기위해 서비스 제공자가 서비스 호스팅에 필요한 모든 것을 직접 구축해야했다. 하지만 이러한 방식은 자원과 인력 비용이 크고 운영 상황의 변화에 능동적으로 대응하기 어려웠다. 그래서 등장한 것이 IDC(Internet Data Ce
Python 기반 웹 프레임워크거의 모든 것이 내장되어있는 구조로 사용자가 원하는 부분부분을 채워나가면서 프로젝트를 완성Flask에 비해 큰 프로젝트에 적합하다.프로젝트 생성 및 서버동작pip install virtualenv : 가상환경 모듈 설치virtualenv
지난 시간에는 python을 이용한 django의 veiw, template, urls 파일에 대해 간단히 작성해 보았고 이번시간에는 데이터베이스와 연관된 models.py파일을 다룰 예정이다.django에서는 DB와 상호작용하기위해 ORM(Object Relation
아래 예제를 통해 클래스와 상속에 대해서 공부한 것을 정리해보겠다.
큰 그림을 봅니다 (look at the big picture).풀어야할 문제가 무엇인지?지도/비지도/강화학습 중 어떤경우인지분류 또는 회기문제인지배치학습(한꺼번에 학습), 온라인학습(단계적으로 학습)할 것인지이 모델이 전체 시스템안에서 어떻게 사용될지 이해-현재 솔루
경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구학습데이터를 통해 목표값을 예측하는 함수확률변수는 표본의 집합 S의 원소(e)를 실수값 X(e) = x에 대응시키는 함수이다.
새로운 값 X가 주어졌을 때 확률모델 p(x,t)에 기반해 최적의 결정을 내리는 것추론단계에서 결합확률분포를 구하고 결정단계에서 확률을 근거로 어떻게 최적의 결정을 낼지 정한다.결합확률분포가 주어졌을 때 최적의 결정영역들을 찾는 것이 목표이다.결정영역 Ri = {x :
인공지능 : 인간처럼 추론, 사고, 이해하는 능력을 실현한 기술, 인공지능의 핵심은 학습!!머신러닝 : 위의 인공지능의 주체가 컴퓨터가 되어 컴퓨터가 경험(데이터)을 학습하고 규칙을 찾아 성능이 개선되어 새로운 경험(데이터)에 대해서 더 잘 예측하는 것딥러닝 : 표현학
두 벡터 a,b가 있다고했을 때 두 벡터의 내적은 아래와 같이 길이와 두 벡터 사이의 각도로 표현이된다.|a| x |b| x cosθ위 식으로부터 두 벡터가 같은 방향을 가질 때는 코사인이 양의 값을 가지므로 결과값은 양수가되고 반대 방향을 가질 때는 같은이유로 결과가
두 확률 분포(P와 Q라고 가정)가 얼마만큼의 정보를 공유하고있는지 유사도의 척도이다.아래와 같은 수식으로 표현되며 머신러닝에서 교차엔트로피는 손실함수로 사용 된다. 예를들어 P를 입력데이터의 분포, Q를 예측데이터의 분포라고했을 때 입력분포는 우리가 조정할 수 없는부
사람의 뇌의 가장 기본단위인 뉴런을 본따 만든 것이 퍼셉트론이다. 이 퍼셉트론은 딥러닝의 가장 기본적인 단위로 퍼셉트로의 병렬적 연결했을 때 각 퍼셉트론을 딥러닝 모델의 layer라고 생각할 수 있다. 입력인 학습데이터와 매개변수인 가중치 곱을 모두 더한 후(내적과 동
image classfication로 잘알려진 CNN 모델인 AlexNet 코드를 tensorflow로 실습하면서 특징을 추출하는 층과 분류층에 Batch Normalization과 Dropout라는 방법이 사용되어 관련 이론을 찾아보았다.단어에서 유추할 수 있듯이 모
만약 기존의 깊은 신경망을 이미지, 영상에 적용한다면 각 layer에서 특징을 추출해 나가면서 최종적으로 추상화, 고도화된 그 특징을 가지고 분류를 진행할 것이다. 하지만 동일한 객체라도 찍는 카메라의 이동, 각도, 객체와 주변의 경계(보호색), 조명 등에따라 픽셀의
Batch Normalization은 최근 딥러닝에서 거의 필수적으로 사용하고있는 방법으로 역전파에서 기울기의 사라짐, 가중치 초기화의 의존성, dropout을 대체하는 효과를 가지고있다. Batch Normalization을 이해하기 위해서는 우선 Covariate
VGGNet 모델은 2014년에 이미지넷 대회에서 준우승을 차지한 모델로(참고로 우승은 GoogLeNet) layer의 개수에따라 VGG16, VGG19로 구분된다. VGG 모델의 가장 큰 특징은 3x3사이즈의 작은 필터만을 사용해 깊은 층을 구성했다는 점이며, 아래는
문제 설명가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다.타일을 가로로 배치 하는 경우타일을
문제 설명계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다.아래 그림은 m = 4, n = 3 인 경우입니다.가장 왼쪽 위, 즉 집이 있는 곳
Object Detection 문제는 CNN의 이미지 분류 문제와 유사하지만 한가지 더 Localization 정보가 추가로 필요하다. Localization는 분류 대상이되는 물체가 이미지에서 1. 존재하는지 여부 2. 어디에 위치하는지 3. 사이즈는 어떻게 되는지
YOLO(You Only Look Once)는 objection model로 현재까지 version4까지 개발되었다. 주요 특징으로는 다른 모델들에비해 inference time이 빠른대신 정확도가 조금은 떨어진다는 단점이있다. 이렇게 속도가 강점인 것은 1. RPN
SSD(single shot detector)의 사진의 변형없이 한장으로 훈련, 검출하는 detector로 구조는 아래와 같다.이미지가 입력으로 들어가면 여러개의 conv layer를 거쳐 특징을 추출한다. 각 layer에서 뽑힌 anchor box들은 마지막 이전 l
대표적 비지도학습을 위한 딥러닝 모델데이터의 숨겨진 구조를 발견하면서 노드의 수를 줄이는 것이 목표입력 데이터에서 불필요한 특징들을 제거한 압축된 특징을 학습하려는 것오토인코더의 출력은 입력을 재구축한 것임최대한 비슷하게 나오도록 학습입력 데이터와 예상 출력 데이터가
맛집 정보 플랫폼에서 크롤링한 review들을 토큰화한 후 임베딩까지 진행해보았다.우선 필요한 모듈을 import 하고 크롤링한 csv 데이터를 불러온다.여기서 내가 사용할 것은 레스토랑 이름과 리뷰인 res_name, review 컬럼이므로 해당 컬럼만 추출한다.리뷰
PageRank와 유사한 HITS algorithm을 이용하여 단어를 추출한다.이는 별도의 토크나이저를 사용하지않고 비지도 기반으로 동작한다.참고colab krwordrank
아래 git에서 한글 kobert를 이용한 문장 임베딩을 진행했다. NLP 프로젝트에서 음식점의 리뷰문장과 사용자가 입력하는 문장과의 유사도를 구하기 위함이다.https://github.com/BM-K/KoSentenceBERT_SKTBERT