전체 글 107

[머신러닝] 머신러닝 개념 훓어보기

학교에서 인공지능 수업과 '딥러닝을 통한 자연어 입문'에 나온 머신러닝 및 딥 러닝의 기초적인 내용을 정리한 포스팅입니다. 머신러닝이란? 위에는 일반적인 프로그래밍 방법이고 아래는 머신러닝의 방법입니다. 머신 러닝은 데이터가 주어지면, 기계가 스스로 데이터로부터 규칙성을 찾는 것에 집중합니다. 주어진 데이터로부터 규칙성을 찾는 과정을 우리는 훈련(training) 또는 학습(learning)이라고 합니다. 일단 규칙성을 발견하고나면, 그 후에 들어오는 새로운 데이터에 대해서 발견한 규칙성을 기준으로 정답을 찾아내는데 이는 기존의 프로그래밍 방식으로 접근하기 어려웠던 문제의 해결책이 되기도 합니다. 여기서 머신러닝과 딥러닝의 차이점으로는 딥러닝은 머신 러닝의 한 갈래이고 “인공 신경망”이라는 알고리즘을 계..

[NLP] 워드 임베딩(Word Embedding)

이번 포스팅에서는 워드 임베딩에 대하여 알아보도록 하겠습니다. 워드 임베딩(Word Embedding) 워드 임베딩(Word Embedding)은 단어를 벡터로 표현하는 방법으로, 단어를 밀집 표현으로 변환합니다. 희소 표현(Sparse Representation) 앞서 원-핫 인코딩을 통해서 나온 원-핫 벡터들은 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 벡터 표현 방법이었습니다. 이렇게 벡터 또는 행렬(matrix)의 값이 대부분이 0으로 표현되는 방법을 희소 표현(sparse representation)이라고 합니다. 원-핫 벡터는 희소 벡터(sparse vector)입니다. 이러한 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커진다는..

[NLP] 한국어 경진 대회 Tip(Kospeech)

전 포스트에서는 대회에서 사용한 Kospeech에서 사용한 모델 Deep Speech2를 알아보았습니다. 이번에는 작년에 참가한 대회에서 현재는 학습을 다시하기에는 제약이 많지만 어떠한 변화를 주었는지에 대해 알아보려고 합니다. 대회 Tip 1. Epoch 변화주기 : Epoch 20회까지 숫자를 늘려주어서 학습을 시켰을 때 가장 train_loss, train_cer, val_loss, val_cer이 가장 낮았습니다. 그리고 20회이상 학습을 진행하니까 타임에러가 나왔고 유의미한 학습결과가 나오지 않았습니다. args = argparse.ArgumentParser() # DONOTCHANGE: They are reserved for nsml args.add_argument('--mode', type=..

[NLP] Deep Speech2 분석하기(Kospeech)

작년 8월~9월까지 한국어 AI경진대회 네이버 CLOVER 부분에 본선에 진출을 하여 주요 영역별 회의 음성인식 성능향상을 위하여 모델을 개선을 하였습니다. 아래 포스트는 Kospeech 분석 및 대회를 위해서 어떤 개선사항이 있었는지 적어볼려고 합니다. Kospeech란? https://github.com/sooftware/kospeech GitHub - sooftware/kospeech: Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition leveraging PyTorch and Hydra Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition levera..

[NLP] 한국어 자연어 처리 관점에서 RNN이란?

RNN(Recurrent Neural Network)이란? RNN : 피드 포워드 신경망 같이 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향한 신경망 들은 피드 포워드 신경망(Feed Forward Neural Network)이라고 합니다. 그와는 다르게 RNN(Recurrent Neural Network)은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있습니다. 위의 그림에서는 x는 입력층의 입력 벡터, y는 출력층의 출력 벡터입니다. 실제로는 편향 b도 입력으로 존재할 수 있지만 앞으로의 그림에서는 생략합니다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를..

[NLP] 한국어 텍스트 전처리 과정(2)

한국어 자연어 처리에 필요한 전처리 과정 1. 한국어에서 정수 인코딩하기 : 한국어에서 정수 인코딩은 자연어 처리 과정 중 하나로, 각 단어를 고유한 정수로 매핑하는 과정입니다. 이를 통해 모델이 텍스트 데이터를 처리하고 예측하는 데 용이해집니다. 정수 인코딩을 수행하기 위해서는 먼저 텍스트 데이터에 대해 토큰화와 같은 전처리 과정이 필요합니다. 이후, 각 단어에 고유한 인덱스를 부여하는 방법으로 정수 인코딩을 수행합니다. 가장 간단한 방법은 파이썬의 기본 자료형인 dict를 이용하여 단어와 인덱스를 매핑하는 것입니다. 아래는 예시 코드입니다. # 예시 문장 text = "나는 자연어 처리를 배운다" # 문장을 띄어쓰기로 토큰화 tokens = text.split() # 단어에 고유한 정수 인덱스 부여 ..

[NLP] 한국어 텍스트 전처리 과정(1)

한국어에서 영어와 다르게 토큰화가 어려운 이유 1. 띄어쓰기 단위가 영어처럼 독립적인 단어라면 띄어쓰기 단위로 토큰화를 하면 되겠지만 한국어는 어절이 독립적인 단어로 구성되는 것이 아니라 조사 등의 무언가가 붙어있는 경우가 많아서 이를 전부 분리해줘야 한다는 의미입니다. 한국어 토큰화에서는 형태소(morpheme) 란 개념을 반드시 이해해야 합니다. 형태소(morpheme)란 뜻을 가진 가장 작은 말의 단위를 말합니다. 이 형태소에는 두 가지 형태소가 있는데 자립 형태소와 의존 형태소입니다. 문장 : 하루는 책을 읽었다 자립 형태소 : 하루, 책 의존 형태소 : -가, -을, 읽-, -었, -다 따라서, '하루'라는 사람 이름과 '책'이라는 명사를 얻어낼 수 있습니다. 이를 통해 유추할 수 있는 것은 한..

[Objective-C] 메모리 관리

1. 애플리케이션과 메모리 애플리케이션 - 객체의 행위, 속성으로 동작 객체의 생성 - 메모리 공간 차지 사용이 끝나면 객체를 해제 2.ARC 옵젝씨에서의 메모리 관리 기법 객체에 '사용 중'이라고 기록 -> 소유(own)하기 리테인 카운트: 객체의 소유된 개수 리테인 카운트 0 -> 사용하지 않는다 -> 해제 수동 시절 소유하기 -> 리테인 카운트 증가 소유권 해제 -> 리테인 카운트 감소 많은 오류와 어려움 자동 시절 ARC 기술 제공 (iOS 5) 자동 작성 객체 소유하기 -> 포인터 변수로 할당 NSObject *ptr =[[NSObject alloc]init]; 객체 소유권 해제 -> 포인터 변수를 nil 혹은 다른 객체 ptr = nil; 추가 포인트로 소유하기 NSObject *ptr = [..

IOS/Objective-C 2023.03.11

[Objective-C] 셀렉터와 프로퍼티

셀렉터 클래스에 선언된 메소드 구별하기 메소드 식별할려면?? -> 이름, 파라미터 개수, 레이블 메소드 선언 -(NSUInteger)length 셀렉터 length ex) -(NSComparisonResult)compare:(NSString *)string 셀렉터 => compare: -(NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask 셀렉터 => compare:options: -(NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange 셀렉터 => compare:o..

IOS/Objective-C 2023.03.10

[Objective-C] 객체 생성 메소드

객체 생성(alloc/init) : [[클래스_이름 alloc] init] alloc: 객체 생성 init: 초기화 객체 생성 과정에서 동작해야 하는 코드 -> init 메소드 재정의 init 메소드 재정의 부모 클래스를 이용한 초기화 부모 클래스의 초기화 과정 성공시 초기화 코드 동작 생성된 객체 반환(self) ex) 사각형 객체 생성시 가로와 세로 길이 자동 설정 -(id)init{ self = [super init]; if(self) { // 초기화 코드 작성 width = 10; height = 10; } return self; } 만약, 초기화 과정에 추가 정보가 필요하면 -> initWith 메소드 생성(헤더에 선언) -(id)initWithWidth:(int)newWidth height:(..

IOS/Objective-C 2023.03.09