목록코딩 (23)
하루 하루
Supervised Learning for document classification (https://youtu.be/kxImnFg4ZiQ) 단계 1. Data preaparation 2. Text preprocessing male. txt에 있는 이름들에 male이라고 레이블을 붙이고, female.txt에 있는 이름들에 female이라고 레이블을 붙여서 데이터를 준비했다. from nltk.corpus import * import random labeled_names = ([(name, 'male') for name in names.words('male.txt')] + [(name, 'female') for name in names.words('female.txt')]) #male.txt 의 단어에 ..
1. 선형회귀분석 주어진 데이터를 가장 잘 설명하는 직선을 찾는것 - simple linear regression : 독립변수가 하나인 경우 - multivariate linear regression : 독립변수가 여러개 인 경우 단순선형회귀분석을 한다는 의미는 y 와 x라는 데이터가 주어졌을 때, y = wx +b 라는 직선의 방정식에서 데이터를 가장 잘 표현하는 w와 b를 찾는다는 것과 동일합니다. 2. 평균제곱오차 주어진 x를 w와 b를 사용해 계산한 예측값 이 실제 값과 유사해야 의미가 있습니다. 따라서, 여러 실제값과 예측값의 차이를 계산하는 방법들이 존재하고, 평균 제곱오차는 그 중에서도 많이 사용되는 방법입니다. 예측값 y ̂ 에서 y 를 빼 차이를 구하고 더합니다. 이 때, 차이가 -인 경..
https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video?hl=ko 이미지 및 동영상의 지연 로딩 | Web Fundamentals | Google Developers 사이트에 수많은 이미지와 동영상이 있지만 이를 줄이고 싶지 않다면, 지연 로딩이 초기 페이지 로드 시간을 향상하고 페이지당 페이로드를 낮추는 데 가장 적합한 기술일 수 있습니다. developers.google.com Lazy Loading은 간단히 페이지 로드 시간에 중요하지 않은 리소스의 로딩을 늦추는 기술이라고 할 수 있습니다. 지연 로딩은 사용자에게 보여지지않는 이미지나 동영상을 로딩하면서 낭비되는 데이터, 처리 시..
[ Types of Execution Context ] excution context는 자바스크립트 코드가 평가되고 실행되는 환경입니다. 즉, 자바스크립트 코드는 excution context 내에서 실행됩니다. Global Execution Context default 실행 컨텍스트로 함수 안에 없는 코드의 경우 해당 excution context에서 실행됩니다. 여기서는 두 가지의 작업이 실행되는데, 첫번째는 전역 개체( window object )를 만들고, 이 값을 전역 개체와 동일하게 설정합니다. 프로그램에는 하나의 전역 실행 컨텍스트만 존재합니다. Functional Execution Context 함수가 호출될 때마다, 해당 함수에 대한 새로운 excution context이 만들어집니다. ..
https://repl.it/~ Log In Repl.it is a simple yet powerful online IDE, Editor, Compiler, Interpreter, and REPL. Code, compile, run, and host in 50+ programming languages: Clojure, Haskell, Kotlin (beta), QBasic, Forth, LOLCODE, BrainF, Emoticon, Bloop, Unlambda, JavaScript, CoffeeS repl.it
ㅁ인공지능 인공지능은 인간의 두뇌를 기계로 구현하는 것을 이야기하며 머신러닝과 딥러닝을 포괄한다. 즉, 컴퓨터 비전, 자연어 처리, 로봇 공학 등 사람의 지능이 필요한 것을 기계가 대체하도록 하는 것을 모두 이야기한다. 여기서 머신러닝은 인공지능을 만드닌 방식으로 기계에게 사람이 구체적인 로직을 설명하지 않아도 학습하는 것을 의미하며, 딥러닝은 머신러닝을 구현하는 기술 중 하나이다. 분류 예시 설명 플랫폼 spark, hadoop 데이터 수집, 저장 및 데이터 분석을 포함하는 기반 환경 도구 tableau, jupyter, R studio, Qlik 프로그램 개발을 돕는 개발 도구 프레임워크 spark, scikit learn, tensorflow, keras 머신러닝 및 딥러닝 알고리즘 학습 및 실행을..
Time Flies like an arrow Fruit flies like an banana 두 문장에서 Flies의 품사는 다른데, 품사 정보가 제대로 명시 되지 않는다면 해석 상에 문제가 생기게 된다. Tagging 위와 같은 중의적인 문제를 해결하기 위해서 말뭉치에 붙이는 부가적인 언어 정보를 tag라고, tag를 원시 말뭉치에 붙이는 것을 Tagging이라 한다. 그리고, 이러한 Tagging을 수행하는 프로그램을 Tagger 라고 하고, 태그가 부착된 말뭉치를 Tagged corpus라 한다. 1. raw text -> sentence segmentation -> sentence 2. sentence -> tokenization -> tokenized sentence 3. tokenized se..
적대적 공격 적대적 공격은 노이즈 생성해서 사람의 눈에는 구분이 되지 않지만 머신러닝 모델에게는 착시를 만들어 헷갈리도록 만드는 예제를 만드는 것이다. 위의 사진에서 왼쪽은 원본 사진이고, 오르쪽은 노이즈가 추가된 사진이다. 노이즈가 추가되어도 사람은 웰시코기로 분류하지만 적대적공격으로 딥러닝은 Whippet으로 분류한다. Whippet 사진 적대적 예제 분류 기준 1. 기울기와 같은 모델 정보가 필요한가? -> O : White Box Model -> X : Black Box Model 2. 원하는 정답으로 유도할 수 있는지? -> O : Targeted -> X : Non- Targeted 3. 노이즈를 생성하기 위해 반복학습이 필요한가? -> O : Iterative -> X : One-Shot 4..
RNN 순차적 데이터 혹은 시계열 데이터의 정보를 받아서 전체 내용을 학습 정해지지 않은 길이의 배열을 읽고 설명하는 신경망 IMDB 영화 리뷰 감성 분석 1. 자연어 전처리 2. RNN 모델 구현
https://youtu.be/k8fTYJPd3_I https://youtu.be/_e-LFe_igno https://youtu.be/JXQT_vxqwIs
오토인코더 오토인코더는 input 을 output으로 복사함으로써 학습한다.( input 과 output 모두 input과 동일한 값이다. ) 단, 신경망은 범용근사자 (ubniversal function approximator ) 로서 근사치를 출력하기 때문에 x와 똑같은 출력을 내기 힘들다. 입력된 x를 '복원'한다는 개념이 더 알맞다. 그러므로 오차값에도 x를 얼마나 복워냈는지를 뜻하는 복원오차, 혹은 정보손실값 (reconstruction loss)라는 용어를 사용한다. Denoising Autoencoder 입력에 잡음을 더해 복원 능력을 강화한 오토인코더
https://youtu.be/DtEq44FTPM4
ResNet 마이크로소프트에서 개발된 ResNet은 2015년 ILSVRC에서 우승을 차지한 알고리즘 ResNet 이 기존 모델과 다른 점은 Shortcut 이 있다는 것이다. Shortcut은 신경망에서 input data를 몇 계층씩 건너뛰어서 output에 더할 수 있도록 해 입력의 특징이 유실되지 않도록 해준다. CIFAR -10 데이터셋 https://www.cs.toronto.edu/~kriz/cifar.html CIFAR-10 데이터 세트는 10 개 클래스의 60000 32x32 컬러 이미지와 클래스 당 6000 개의 이미지로 구성된다. 50000 개의 훈련 이미지와 10000 개의 테스트 이미지가 있다. 해당 데이터셋은 컬러 이미지를 포함하고 있는데, 컬러 이미지는 몇 가지 채널을 포함한다..
CNN 이미지를 볼 때 뇌가 특정 부위만 자극된다는 사실에서 착안하여 만든 모델 필터 / Kernel - 이미지의 특징을 추출한다. - 컨볼루션 계츨 하나에 여러 개가 존재할 수 있다. - (홀수 정수 ) * (홀수 정수 ) 크기가 보통 사용된다. Stride - 필터가 이미지에 적용될 때 한 번에 얼마나 이동하는지에 대한 갑사 - Stride의 크긱가 커질수록 출력 Tensor의 크기는 작아진다. Feature Map 컨볼루션을 거쳐 만들어지는 이미지 Pooling - 과적합의 위험을 줄이기 위해 Convolution에서 추출한 특징을 값 하나로 추려내서 특징 맵의 크기를 줄이고 중요한 특징을 강조하는 역할 - 필터가 지나갈 떄 마다 평균이나 최댓값을 가져오는 연산 수행 더보기 tf.nn.max_poo..
DNN 0. 1~3 번 epoch 만큼 반복 1. 신경망 학습하기 train (model, train_loader, optimizer) 2. 신경망 테스트하기 test_loss, test_accuracy = evaluate( model, test_loader ) 3. 결과 출력하기 print('[{}] Test Loss: {:.4f}, Accuracy: {:.2f}%'.format(epoch,test_loss,test_accuracy)) 신경망 학습하기 model.train ( )으로 학습 모드 설정후에 for 문으로 배치 데이터 만큼만 가져와서 신겸망을 학습한다. 우선, 입력 data와 목표 target 값을 가져와서 device로 보낸다. ( device 는 GPU 로 앞서서 설정한 상황 ) 다음으로..
https://pytorch.org/docs/stable/nn.html torch.nn — PyTorch master documentation Shortcuts pytorch.org Parameters torch.nn.Parameter - 매개변수 1. data ( Tensor ) 2. needs_grad ( bool , optional ) : 매개 변수에 그래디언트가 필요한 경우 ( default = True) Containers torch.nn.Module neural network modules의 기본적인 클래스 import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): def __init__(self): super(M..
# Fashion MNIST 데이터셋 알아보기 1. 사용할 모듈 import 2. 이미지 - > tensor ToTensor() 사용 더보기 # torchvision Transforms 1. ToTensor 이미지를 파이토치 텐서로 변환 2. Resize 이미지 크기 조정 3. Normalize 주어진 평균과 표준편차를 이용하여 정규화 4. RandomHorizontalFlip 무작위로 이미지의 오른쪼고가 왼쪽을 뒤집는 기능 5. RandomCrop 이미지를 무작위로 자르는 기능 3. 학습용 트레이닝 셋과 성능 평가용 테스트셋 준비 FashionMNIST 데이터셋 4. 'DataLoader' 준비 batch_size = 16 더보기 # DataLoader torchvision.datasets 으로 생성된..
파이토치 :딥러닝 프레임워크로 쉽게 GPU를 활용해서 인공신경망을 만들어 학습시킬 수 있도록 돕는다. #1 텐서의 차원 import torch x = torch.tensor([[1,2,3],[4,5,6],[7,8,9]]) x = torch.unsqueeze(x,0) x = torch.squeeze(x,0) print("size ", x.size) print("shape", x.shape) print("랭크", x.ndimension()) torch.unsqueeze() , torch.squeeze() , x.view 는 텐서의 원소 수를 유지하면서 모양과 차원을 바꿈 그래서 만약 원소 수와 다르게 모양이나 차원을 바꾸려고 하면 error가 발생한다. #2 행렬의 연산 import torch w = tor..
1. 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 2. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 ..
1. 문제 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 2. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. 3. 출력 첫째 줄에 연결 요소의 개수를 출력한다. 4. 예제 5. 답안 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #incl..
1. 문제 BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다. 오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다. A는 B와 친구다. B는 C와 친구다. C는 D와 친구다. D는 E와 친구다. 위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오. 2. 입력 5 4 /*첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다.*/ 0 1 1 2 2 3 3 4 /* 둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 번 ..
1. 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 2. 입력 1 2 3 4 5 6 7 8 9 10 11 12 4 5 1 /* 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. */ 1 2 1 3 1 4 2 4 3 4 /*다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다.*/ cs 3. 출..
BFS/ DFS BFS는 옆으로 (너비로) 탐색을 진행하는 알고리즘이고, DFS는 아래로(깊이로) 탐색을 진행하는 알고리즘이다. BFS는 루트에서 시작해서 자식 노드들을 모두 방문후 자식 노드들의 자식 노드를 방문하는 방식으로 진행되고, DFS는 루트에서 시작해서 자식 노드의 자식 노드로 방문해 마지막까지 갔다가 올라와 형제 노드를 방문하는 방식으로 진행된다. BFS 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 BFS ( Grape , start ){ for each node in Grape{ visited[node] = 'no' ; } // 정점을 모두 방문하지 않은 것으로 초기화한다. visited [start] = 'yes' ; // 시작 정..