Python 33

2-1. 신경망의 기본 구성 요소 - 퍼셉트론과 활성화함수

1. 퍼셉트론 퍼셉트론은 가장 간단한 신경망으로 입력, 연산, 출력으로 이뤄진다. 퍼셉트론은 위 그림처럼 다수의 입력을 받고, 해당 입력에 f(wx + b) 연산을 진행하고, 일반적으로 비선형 함수인 활성화 함수를 거쳐, y hat값을 구하는 과정이다. 즉, 퍼셉트론은 선형함수와 비선형함수의 조합이다. 선형함수인 wx + b 연산을 affine transformation(아핀 변환)이라고도 부른다. 2. 활성화 함수 (1) 시그모이드 신경망 분야의 초창기부터 사용한 활성화 함수로, 임의의 실수값을 받아서 0과 1 사이의 범위로 압축한다. 식은 다음과 같으며, 그래프는 다음과 같다. 그래프에서 볼 수 있다시피, 입력이 얼마나 큰 값이 들어오던 상관없이 0과 1로 수렴하기 때문에 매우 극단적인 출력을 만들곤..

Python/NLP+Pytorch 2023.01.26

1. Tensor 기초

1. Tensor의 생성 기본적으로 세가지 방법을 통해서 생성할 수 있다. 랜덤으로 초기화한 텐서 생성, 리스트에서 텐서 생성, 넘파이에서 텐서 생성. 기본적으로 Tensor의 디폴트 텐서타입은 float32이지만, 넘파이에서 텐서를 생성하게 되면 float64(double)형식으로 생성된다. 2. 텐서의 기초 메소드 - add와 + 연산은 동일하다 - list와 넘파이에서의 arange와 동일하다 - view는 동일한 데이터를 공유하는 새로운 텐서를 만든다. 데이터의 포인터값은 동일하기 때문에, 원본 데이터의 값이 변하면 뷰 텐서의 값 역시 같이 변한다. - sum은 해당 차원의 값들을 모두 더한다. (2,3에서 dim=0이면 2개의 값들을 더해줌) - transpose는 전치해줌. (두번째, 세번째 ..

Python/NLP+Pytorch 2023.01.25

도커 컴포즈(Docker Compose) 뜻, 작성법 및 주의사항

1. Docker Compose 란 여러 개의 명령어를 하나의 yaml파일로 정리해서, 한번에 시스템 전체를 실행하고 종료와 폐기까지 시키는 방식. - Dockerfile과의 차이점 Dockerfile은 하나의 이미지를 만드는 방법이고, Docker Compose는 컨테이너+환경설정, 네트워크, 볼륨을 한 번에 만드는 방식이다. Dockerfile에서는 네트워크와 볼륨 생성 및 설정이 불가능하다. - 쿠버네티스와의 차이점 쿠버네티스는 컨테이너를 관리하는 도구이지만, 도커 컴포즈는 컨테이너를 생성하고 삭제하는 것 뿐이다. (관리 불가능) - 설치 Window와 MacOS에는 이미 설치가 되어있기 때문에, 따로 설치할 필요가 없다. 리눅스는 설치해야 한다. - 사용법 하나의 폴더에 docker-compose..

Dockerfile 작성법, 문법, 인스트럭션

Dockerfile 이란 도커 이미지를 만드는 스크립트이다. Dockerfile을 작성한 뒤, 아래와 같이 실행하면 도커 이미지가 빌드된다. #기본 빌드 방식 docker build -t 이미지이름 dockerfile의_경로 #dockerfile이 존재하는 폴더에서 빌드할 경우 docker build -t 이미지이름 . 1. 주요 명령어(인스트럭션) 명령어(인스트럭션) 내용 FROM 베이스 이미지 지정 ADD 이미지에 파일이나 폴더를 추가 COPY 이미지에 파일이나 폴더를 추가 RUN 이미지 빌드할 때, 실행할 명령어 지정 CMD 컨테이너 실행할 때, 실행할 명령어 지정 ENTRYPOINT 컨테이너 실행할 때, 강제로 실행할 명령어 지정 WORKDIR RUN, CMD, ENTRYPOINT, ADD, CO..

Docker 명령어 정리

1. Docker의 기본적인 명령어 형태 docker 상위커맨드 하위커맨드 (옵션) 대상 (인자) ex) docker container run -d test1 --mode=1 인자를 쓰는 경우는 많지 않음. 2. 커맨드 정리 1) container 관련 docker container start#컨테이너를 실행 docker container stop#컨테이너를 정지 docker container create#이미지로부터 컨테이너를 생성 docker container run#이미지를 다운받고, 컨테이너를 생성해서 실행 docker container rm#정지된 상태의 컨테이너를 삭제 docker container exec#실행 중인 컨테이너 속에서 프로그램을 실행 docker container ls#컨테이너..

docker build시, [Errno 28] No space left on device 해결

dockerfile로 image를 생성하다 보면, Could not install packages due to an OSError: [Errno 28] No space left on device 와 같은 에러가 발생할 때가 있다. 주로, cache값을 많이 먹게 되는 dockerfile에서 RUN pip install -r requirements.txt을 반복적으로 하다가 이와 같은 에러가 발생하는 경우가 많다. stackoverflow에서 검색해본 결과, inode가 꽉차서 그렇다고 한다. docker system prune docker volume prune #To see all volumes docker volume ls #To show docker disk usage docker system df..

4. 텍스트 전처리(정규화)

텍스트를 바로 분석하거나, 임베딩을 할 수는 없다. 따라서, NLP는 사전에 텍스트를 가공하는 작업이 필요하다. 머신러닝 알고리즘이나 NLP API에 입력하기 위해, 텍스트 데이터를 클렌징, 토큰화, 어근화의 과정을 거치는 것을 텍스트 전처리 또는 텍스트 정규화라고 한다. (Text Preprocess, Text Normalization) 순서는 다음과 같다. 1) 클렌징 2) 토큰화 3) 필터링 및 스톱워드 제거 4) Stemming or Lemmatization 차례대로 간략하게 설명하도록 하겠다. 1. 클렌징 텍스트 분석에 불필요한 태그를 삭제하는 과정이다. 요즘 데이터는 대부분 크롤링을 해오기 때문에, html이나 xml태그를 삭제하는 과정이 이에 속한다. beautifulsoup4이나 selen..

3. khaiii 설치 및 사용법

내가 주로 사용하는 형태소 분석기는 khaiii이다. 성능과 속도가 둘 다 준수하며, 카카오에서 지속적인 유지관리를 해주지 않을까하는 기대때문에 계속 사용하고 있다. khaiii(Kakao Hangul Analyzer iii)는 카카오가 2018년에 공개한 한국어 형태소 분석기이다. 세종코퍼스를 CNN으로 분석하여 학습했다고 한다. 유일한 단점은 Window에서 사용이 불가능하다는 점이다. MacOS과 Ubuntu에서는 사용이 가능함. https://github.com/kakao/khaiii kakao/khaiii Kakao Hangul Analyzer III. Contribute to kakao/khaiii development by creating an account on GitHub. github...

2. konlpy 사용법

한국어를 자연어처리하기 위해서는 형태소 단위로 문장을 분석해야 한다. 영어의 경우 띄어쓰기를 기준으로 단어를 나눠서 분석하면 되지만, 한국어는 의미를 나타내는 가장 작은 단위인 형태소로 분석한다. 1) 설치 가상환경에서 pip install konlpy를 한다. 2) 사용법 konlpy에는 은전한닢(Mecab), 꼬꼬마(kkma), 한나눔(Hannanum), Okt, 코모란(Komoran)이라는 5개의 형태소 분석기를 통합적으로 지원한다. API https://konlpy-ko.readthedocs.io/ko/latest/api/konlpy.tag/# tag Package — KoNLPy 0.5.2 documentation 매개 변수: jvmpath -- The path of the JVM passed ..

1. 임베딩이란

1. 임베딩의 정의 컴퓨터는 인간이 사용하는 자연어(Natural Language)를 있는 그대로 이해할 수 없다. 따라서, 우리는 컴퓨터가 글자데이터를 분석할 수 있도록, 글자를 숫자형 데이터로 변형하여 전달해야 한다. 기계가 이해할 수 있는 숫자의 배열은 벡터라고도 하기 때문에, 일반적으로 문자를 숫자로 변환하는 과정을 '벡터화한다' 혹은 '워드를 임베딩한다'라고 말한다. 임베딩의 형태는 크게 두가지가 있다. 1) 희소표현 (Sparse Representation Matrix) One-Hot encoding을 통해, 코퍼스에 사용된 단어에 인덱스번호를 부여하고 해당 단어를 인덱스값으로 치환하는 방식이다. 즉, 10000개의 단어가 있다면 벡터는 10000차원의 데이터가 된다. ex) 코퍼스의 사이즈가..